Sweetylv 2024-06-07 10:47 采纳率: 66.7%
浏览 1
已结题

如何用python插入txt两列数据到excel中,第一列“章节数”,第二列“章节内容?

需求:
用python插入txt两列数据到excel中,第一列“章节数”,第二列“章节内容”

img

以下为执行代码:


```python
import pandas as pd

# 读取文本文件
with open('D:\example\chapters.txt', 'r') as file:
    lines https://img-mid.csdnimg.cn/release/static/image/mid/ask/6c254291cc654e9d98de69837fb28b76.png "#left")
= file.readlines()

# 去除每行的换行符
chapters = [line.strip() for line in lines]

# 创建 DataFrame
# df = pd.DataFrame({'Chapter': chapters}) # 单一列执行方式:
df = pd.DataFrame({
    '章节数': [int(chapter.split(' ')[0]) for chapter in chapters],
    '章节名称': [chapter.split(' ')[1] for chapter in chapters]
})
# 保存为 Excel 文件
df.to_excel('D:\example\chapters.xlsx', index=False)

报错提示:
lines = file.readlines()
UnicodeDecodeError: 'gbk' codec can't decode byte 0xac in position 2: illegal multibyte sequence


  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-06-07 10:47
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    要解决您的问题,首先需要确保Python脚本能够正确读取txt文件的编码。在Windows系统中,默认的编码通常是cp1252GBK,但有时候文本文件可能使用UTF-8编码。从错误提示来看,您的文件可能是以GBK编码保存的,但Python尝试使用默认编码去读取它,导致了解码错误。

    下面是修改后的代码,它将尝试以GBK编码读取文件,如果仍然失败,将回退到UTF-8编码。此外,我也调整了代码以更准确地解析章节数和章节名称,并创建DataFrame:

    import pandas as pd
    
    # 定义一个函数来读取文件,尝试不同的编码
    def read_file(file_path, encodings=['GBK', 'UTF-8']):
        for encoding in encodings:
            try:
                with open(file_path, 'r', encoding=encoding) as file:
                    lines = file.readlines()
                return lines
            except UnicodeDecodeError:
                continue
        raise ValueError("None of the encodings worked.")
    
    # 读取文本文件
    lines = read_file('D:\\example\\chapters.txt')
    
    # 去除每行的换行符,并解析数据
    chapters = []
    for line in lines:
        line = line.strip()
        # 假设章节数总是以“第X章”开始,然后是章节内容
        chapter_number = int(line.split('第')[1].split('章')[0])
        chapter_content = line.split('第')[-1].split('章')[-1].strip()
        chapters.append([chapter_number, chapter_content])
    
    # 创建 DataFrame
    df = pd.DataFrame(chapters, columns=['章节数', '章节内容'])
    
    # 保存为 Excel 文件
    df.to_excel('D:\\example\\chapters.xlsx', index=False)
    

    这段代码首先定义了一个read_file函数,它尝试以指定的编码列表中的编码去读取文件。如果所有尝试都失败,它将抛出一个异常。然后,代码读取txt文件,解析每一行以提取章节数和章节内容,并创建一个DataFrame。最后,DataFrame被保存为Excel文件。

    请注意,您需要将文件路径替换为您实际的文件路径。

    关于参考资料,您可以查阅Pandas官方文档来了解更多关于DataFrame和Excel文件操作的信息:

    • Pandas官方文档:https://pandas.pydata.org/pandas-docs/stable/

    此外,对于文件编码问题,您可以查阅Python官方文档中关于文件和编码的部分:

    • Python文件和编码:https://docs.python.org/3/tutorial/inputoutput.html#reading-and-writing-files
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 6月15日
  • 已采纳回答 6月7日
  • 创建了问题 6月7日

悬赏问题

  • ¥20 这张图页脚具体代码该怎么写?
  • ¥20 WPF MVVM模式 handycontrol 框架, hc:SearchBar 控件 Text="{Binding NavMenusKeyWords}" 绑定取不到值
  • ¥15 需要手写数字信号处理Dsp三个简单题 不用太复杂
  • ¥15 数字信号处理考试111
  • ¥15 allegro17.2生成bom表是空白的
  • ¥15 请问一下怎么打通CAN通讯
  • ¥20 如何在 rocky9.4 部署 CDH6.3.2?
  • ¥35 navicat将excel中的数据导入mysql出错
  • ¥15 rt-thread线程切换的问题
  • ¥15 高通uboot 打印ubi init err 22