您好,您遇到的报错是由于读取文件时编码问题引起的。默认情况下,`readlines` 使用系统默认编码(通常是 `gbk`),而文件可能是用其他编码格式(例如 `utf-8`)保存的。
我们可以在读取文件时指定文件编码来解决这个问题。此外,前面还存在一些问题没有进行修正,我们一起修改一下代码。
- # 这个程序的目的是用来自动填写pdms的仪表坐标
- import tkinter as tk
- from tkinter import filedialog
- import pandas as pd
- import re
- def select_txt_file():
- txt_file = filedialog.askopenfilename(filetypes=[("Text files", "*.txt")])
- return txt_file
- def select_output_folder():
- output_folder = filedialog.askdirectory()
- return output_folder
- def main():
- root = tk.Tk()
- root.withdraw()
- # 选择txt文件
- txt_file = select_txt_file()
- # 选择输出文件夹
- output_folder = select_output_folder()
- # 读取txt文件,使用合适的编码,例如utf-8
- with open(txt_file, 'r', encoding='utf-8') as file:
- lines = file.readlines()
- # 去掉首位的空白符
- lines = [line.strip() for line in lines]
-
- # 使用正则表达式分割每行数据
- data = [re.split(r'\s{2,}', line) for line in lines]
-
- # 创建DataFrame
- df = pd.DataFrame(data)
-
- # 将DataFrame写入Excel文件
- excel_file = f"{output_folder}/转换后excel.xlsx"
- df.to_excel(excel_file, index=False, header=False)
- if __name__ == "__main__":
- main()
复制代码
关键点:
1. **编码问题**:指定文件读取时使用 `utf-8` 编码。
2. **文件类型选项**:`filetypes` 参数指定为 `("Text files", "*.txt")` 格式。
3. **处理多空格分割**:使用正则表达式 `re.split(r'\s{2,}', line)`,以处理多个空格作为分隔符的情况。
这样处理后,应该可以正确读取文件并将内容转化为Excel表格。如果您的文件采用其他编码,请将 `encoding='utf-8'` 改为对应的编码格式。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。