如何使用python在csv文件中保存波斯语文本?

jk9hmnmh  于 2021-09-08  发布在  Java
关注(0)|答案(2)|浏览(457)

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

  1. with open(data_path+'Furough.csv', 'w',encoding="utf-8") as f0:
  2. df = pd.DataFrame(columns=['title','poem','year'])
  3. for f in onlyfiles:
  4. poem=[]
  5. title=""
  6. year=0
  7. with open(mypath+f,"r",encoding="utf-8") as f1:
  8. for line in f1:
  9. if line.__contains__("TIMESTAMP"):
  10. year=int(line[12:15])
  11. continue
  12. if line.__contains__('TITLE'):
  13. title=line[7:]
  14. if line!="":
  15. poem.append(line)
  16. df = df.append({
  17. 'title': title,
  18. 'poem':poem,
  19. 'year': int(float(year))
  20. }, ignore_index=True)
  21. df.to_csv(f0, index=False,encoding='utf-8-sig')

但结果很混乱,将一些未知字符写入csv文件而不是波斯语字符:有人能帮我吗?
我想在csv中写入所有这些文件:

我想写的其中一个例子:

  1. [V_START] بر پرده‌های درهم امیال سرکشم [HEM]
  2. نقش عجیب چهرۀ یک ناشناس بود [V_END]
  3. [V_START] نقشی ز چهره‌ای که چو می‌جستمش به شوق [HEM]
  4. پیوسته می‌رمید و بمن رخ نمی‌نمود [V_END]
  5. [V_START] یک شب نگاه خستۀ مردی به روی من [HEM]
  6. لغزید و سست گشت و همان ‌جا خموش ماند [V_END]
  7. [V_START] تا خواستم که بگسلم این رشتۀ نگاه [HEM]
  8. قلبم تپید و باز مرا سوی او کشاند [V_END]

但结果是:

s71maibg

s71maibg1#

要添加到cimbali的答案中,添加utf8 bom的另一种方法是使用编码“utf-8-sig”而不是“utf-8”,因为它会自动为您处理。
此问题中有更多信息:无法使用python将阿拉伯语解码的unicode保存到csv文件

pzfprimi

pzfprimi2#

您的文件可能是正确的,excel正在使用另一种编码打开它。
插入utf-8 bom可能会迫使excel将csv正确识别为utf-8:

  1. import codecs
  2. with open(data_path+'Furough.csv', 'w',encoding="utf-8") as f0:
  3. f0.write(codecs.BOM_UTF8)
  4. # rest of your code

否则,请参阅此microsoft帮助页,了解如何在excel中打开utf-8 csv文件而不进行错误转换?
基本上是通过“从文本获取数据”对话框来指定编码。

相关问题