一些CSV值出现在错误的列中(使用打开的python)



我正在用Python将数据写入CSV文件。数据采用Unicode-8格式。我已经成功地写了几行。但是,列B中的一部分数据被写入到列a中。这些数据已经包括英文逗号和数字以及阿拉伯文本。

我还在记事本中检查了文本在双引号之间,似乎还可以,但在MS Office和LibreOffice预览中,它看起来不太好。当它在LibreOffice预览后打开时,看起来很好。以下是我的试验:

with open(df_path, "w", newline="", encoding="utf-8") as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=["File Name", "Content"], quoting=csv.QUOTE_ALL)
writer.writeheader()
writer.writerow({"File Name": file, "Content": txt})
with open(df_path, "w", newline="", encoding="utf-8") as csv_file:
writer = csv.writer(csv_file)
writer.writerow(["File Name", "Content"])
writer.writerow([file, '"' + txt + '"'])
with open(df_path, "w", newline="", encoding="utf-8") as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=["File Name", "Content"])
writer.writeheader()
writer.writerow({"File Name": file, "Content": txt})
with open(df_path, "w", newline="", encoding="utf-8") as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=["File Name", "Content"], quoting=csv.QUOTE_ALL)
writer.writeheader()
writer.writerow({"File Name": file, "Content": txt})
with open(df_path, "w", newline="", encoding="utf-8") as csv_file:
writer = csv.DictWriter(csv_file, fieldnames=["File Name", "Content"], delimiter=",")
writer.writeheader()
writer.writerow({"File Name": file, "Content": txt})

我应该如何保持B列中的数据?我不能使用Pandas,因为我希望文件保持打开状态,而不是一次写入所有数据。提前感谢!

编辑:我不能分享文本,因为当我复制和粘贴文本时,问题就消失了。

到目前为止,我得出的结论是,当我向文件中添加某些数据并在终端中检查时,它显示"Unicode文本,UTF-8文本,带CRLF, LF行终止符";而不是"CSV文本"第一个代码片段是我使用的,它产生了两个。

因此,与LibreOffice Calc, NotePad和Google Sheets不同,只有在MS Excel中,文本被拆分并出现在错误的列中。这是在分隔符相同的情况下。

原因是MS Excel拆分超过32767的文本,即使它是。csv而不是。xlsx文件。这并不适用于其他软件。这也是为什么所有代码更改都不能解决问题的原因。此外,使用dialect = 'excel'并不能解决问题。唯一的解决办法是,如果超过限制,就拆分代码中的文本。

最新更新