【问题标题】:Saving data from python to excel file as CSV UTF-8 file format将数据从 python 保存到 excel 文件为 CSV UTF-8 文件格式
【发布时间】:2019-08-17 17:54:49
【问题描述】:

我一直在尝试将数据另存为 excel 文件作为
CSV UTF-8(逗号分隔)(*.csv) 类型,这与普通文件不同
CSV(逗号分隔)(*.csv) 文件。它在excel中打开时显示unicode文本。我可以从excel轻松保存为该文件,但从python我只能将它保存为普通的csv。这不会导致数据丢失,但打开时会显示这种文本“à¤à¤‰à¤Ÿà¤¾”而不是“एउटा”这个文本。

如果我将使用记事本打开的文本复制到 excel 文件中,然后手动将文件另存为 CSV UTF-8,则它会保留正确的显示。但是这样做很耗时,因为所有值都出现在记事本的同一行中,我必须在 excel 文件中将其分开。 所以我只想知道如何使用 python 将数据保存为 CSV UTF-8 格式的 excel。

我已经尝试了以下代码,但结果是正常的 csv 文件。

import codecs
import unicodecsv as csv

input_text = codecs.open('input.txt', encoding='utf-8')
all_text = input_text.read()
text_list = all_text.split()

output_list = [['Words','Tags']]
for input_word in text_list:
    word_tag_list = [input_word,'O']
    output_list.append(word_tag_list)

with codecs.open("output.csv", "wb") as f:
    writer = csv.writer(f)
    writer.writerows(output_list)

【问题讨论】:

    标签: python excel csv utf-8


    【解决方案1】:

    您需要向 Excel 表明这是一个 UTF-8 文件。不幸的是,这样做的唯一方法是在文件前面添加一个特殊的字节序列。如果您使用特殊编码,Python 会自动执行此操作。

    with codecs.open("output.csv", "w", "encoding="utf_8_sig") as f:
    

    【讨论】:

    • with codecs.open("output.csv", "w", encoding="utf_8_sig") as f: 这导致 TypeError:utf_8_encode() 参数 1 必须是 str,而不是 bytes跨度>
    • 是的,我已经这样做了,写入 encoding="utf_8_sig" 时出现同样的错误
    【解决方案2】:

    我找到了答案。 encoding="utf_8_sig" 应赋予 csv.writer 方法以将 excel 文件写入为 CSV UTF-8 文件。之前的代码可以写成:

    with open("output.csv", "wb") as f:
        writer = csv.writer(f, dialect='excel', encoding='utf_8_sig')
        writer.writerows(output_list)
    

    但是当数据末尾有 , 时出现问题 例如:“भने” 对于这种情况,我不需要逗号,因此我在 for 循环中使用以下代码将其删除。

    import re
    
    if re.search(r'.,$',input_word):
        input_word = re.sub(',$','',input_word)
    

    最后,我能够正确显示 Unicode 字符并删除数据末尾存在的额外逗号,从而获得所需的输出。因此,如果有人知道如何在 excel 文件中忽略数据末尾的逗号,那么您可以在此处发表评论。谢谢。

    【讨论】:

      猜你喜欢
      • 2014-02-11
      • 2013-04-23
      • 2011-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-12
      • 1970-01-01
      相关资源
      最近更新 更多