划分txt失败,没办法了求助
需要将附件的txt文件用pandas转化到excel中,需要转换的数据如下/锅炉定排80-CBD-5310-30002-B1TB51-H(GC2) INST/XV-5310038 E 26580.15mm N 7290mm U 11823mm /锅炉定排80-CBD-5310-30002-B1TB51-H(GC2)/B2
/锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉) INST/TE-5310015 E 27045.424mm N 10029mm U 15031.8mm /锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉)/B4
/锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉) INST/PG-5310043 E 27045.424mm N 9563mm U 15163.15mm /锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉)/B3
/锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉) INST/FT-5310017 E 33150mm S 1248.6mm U 5117.15mm /锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉)/B2
/锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉) INST/LV-5310001 E 27045.424mm N 8489.5mm U 14792.15mm /锅炉给水50-LBW-5310-30001-B1TB51-H(锅炉)/B2
把上面的内容按照各个数据列之间的空格隔开,填到excel中就行。失败的代码如下
#这个程序的目的是用来自动填写pdms的仪表坐标
import tkinter as tk
from tkinter import filedialog
import pandas as pd
from openpyxl import Workbook
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()
data = pd.read_csv(txt_file, sep=' ', header=None)
# 将DataFrame写入Excel文件
excel_file = f"{output_folder}/转换后excel.xlsx"
df.to_excel(excel_file, index=False)
if __name__ == "__main__":
main()
鱼油你好,你的代码有几点小问题,我们来一步步改进一下。
1. `filedialog.askopenfilename(filetypes=)` 这行代码中,`filetypes`的括号里是空的,应该指定文件类型。
2. `csv`文件中用空格分割时,遇到多个连续空格会被当作多个分隔符处理,所以需要特殊处理。
3. `df`变量在将数据写入Excel前并没有定义,这要改成使用`data`。
以下是完善后的代码:
import tkinter as tk
from tkinter import filedialog
import pandas as pd
def select_txt_file():
# 指定打开文件类型为txt
txt_file = filedialog.askopenfilename(filetypes=(("Text files", "*.txt"), ("All files", "*.*")))
return txt_file
def select_output_folder():
return filedialog.askdirectory()
def main():
root = tk.Tk()
root.withdraw()
# 选择txt文件
txt_file = select_txt_file()
# 选择输出文件夹
output_folder = select_output_folder()
# 读取txt文件
with open(txt_file, 'r') as file:
lines = file.readlines()
# 处理txt文件每行的内容
data = []
for line in lines:
# 将每行按多个空格分隔开来
parts = line.split()
if parts:# 确保行不为空
data.append(parts)
# 将数据转换为DataFrame
df = pd.DataFrame(data)
# 将DataFrame写入Excel文件
excel_file = f"{output_folder}/converted_excel.xlsx"
df.to_excel(excel_file, index=False, header=False)
if __name__ == "__main__":
main()
这个代码应该可以正确读取txt文件并将其转换为Excel文件。如果数据需要进一步清理或者在转换过程中遇到特殊情况,可以根据实际需求进行调整。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 还是失败,错误报告如下:
Traceback (most recent call last):
File "D:\PYTHON_NEW\pack20240926\pythonProject1\insrt_sheet_cad.py", line 42, in <module>
main()
File "D:\PYTHON_NEW\pack20240926\pythonProject1\insrt_sheet_cad.py", line 25, in main
lines = file.readlines()
^^^^^^^^^^^^^^^^
UnicodeDecodeError: 'gbk' codec can't decode byte 0x94 in position 1329: illegal multibyte sequence
颂风侯 发表于 2024-10-01 22:56
还是失败,错误报告如下:
Traceback (most recent c ...
您好,您遇到的报错是由于读取文件时编码问题引起的。默认情况下,`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 =
# 使用正则表达式分割每行数据
data =
# 创建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 小助理,如未能正确解答您的问题,请继续追问。 终于成功了,唉,ai实在太强了,我就是一头猪
页:
[1]