【问题标题】:How to save Farsi text in csv file using python?如何使用 python 将波斯语文本保存在 csv 文件中?
【发布时间】:2021-07-09 08:25:48
【问题描述】:

我试图使用以下脚本将我的数据集保存在 CSV 文件中:

with open(data_path+'Furough.csv', 'w',encoding="utf-8") as f0:
    df = pd.DataFrame(columns=['title','poem','year'])
    for f in onlyfiles:
        poem=[]
        title=""
        year=0
        with open(mypath+f,"r",encoding="utf-8") as f1:
            for line in f1:
                if line.__contains__("TIMESTAMP"):
                    year=int(line[12:15])
                    continue
                if line.__contains__('TITLE'):
                    title=line[7:]
                if line!="":
                    poem.append(line)
            df = df.append({
                            'title': title,
                            'poem':poem,
                            'year': int(float(year))
                            }, ignore_index=True)
            df.to_csv(f0, index=False,encoding='utf-8-sig')

但结果令人困惑,将一些未知字符写入 CSV 文件而不是波斯语字符: 谁能帮帮我?

我想将所有这些文件写入 CSV: 我在其中一个中拥有并想写的示例:

[V_START] بر پرده‌های درهم امیال سرکشم [HEM]
نقش عجیب چهرۀ یک ناشناس بود [V_END]
[V_START] نقشی ز چهره‌ای که چو می‌جستمش به شوق [HEM]
پیوسته می‌رمید و بمن رخ نمی‌نمود [V_END]

[V_START] یک شب نگاه خستۀ مردی به روی من [HEM]
لغزید و سست گشت و همان ‌جا خموش ماند [V_END]
[V_START] تا خواستم که بگسلم این رشتۀ نگاه [HEM]
قلبم تپید و باز مرا سوی او کشاند [V_END]

但结果:

【问题讨论】:

  • 您的 csv 编辑器通常能正确显示波斯语吗?
  • 我不确定,但您在 to_csv 函数中提到的输出文件名可能有问题。我测试了类似的代码,写入现有文件时出现问题。尝试一个新文件并提供反馈。建议:输入与您提到的输出类似的代码示例输入可以增加更快找到答案的机会。
  • 你用什么打开最后的csv文件@zahraHosseini?
  • 您可以尝试将 utf-8s 更改为 utf-8-sig 吗?我正在经历这个:stackoverflow.com/questions/34905380/…,它可能会有所帮助。
  • 编辑我之前的消息,主要是我认为 write-open 是需要在 utf-8-sig 中的那个

标签: python pandas nlp farsi


【解决方案1】:

很可能您的文件是正确的,而 excel 正在使用另一种编码打开它。

也许插入 utf-8 BOM 可能会强制 excel 将 csv 正确识别为 utf-8:

import codecs

with open(data_path+'Furough.csv', 'w',encoding="utf-8") as f0:
    f0.write(codecs.BOM_UTF8)

    # rest of your code

否则请参阅how to open UTF-8 CSV file in Excel without mis-conversion 上的此 Microsoft 帮助页面?
基本上是通过“Get Data From Text”对话框来指定编码。

【讨论】:

    【解决方案2】:

    为了补充 Cimbali 的答案,另一种添加 UTF8 BOM 的方法是使用编码“utf-8-sig”而不是“utf-8”,因为它会自动为您处理。

    更多信息在这个问题中:Unable to Save Arabic Decoded Unicode to CSV File Using Python

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多