从CSV文件中提取Unicode数据

时间:2014-02-07 10:06:51

标签: python csv unicode

我有一个像这样的CSV文件 编码UTF-8

# id    english_word    part_of_speech  malayalam_definition
174569  .net    n   പുത്തന്‍ കമ്പ്യൂട്ടര്‍ സാങ്കേതികത ഭാഷ
116102  A bad patch n   കുഴപ്പം പിടിച്ച സമയം
115869  A bed of nails  n   പ്രയാസപ്പെടുന്ന അവസ്ഥ
200587  A bed of nails  idm ശരശയ്യ
115768  A bed of roses  n   സുഖകരമായ അവസ്ഥ
115767  A bed of roses  n   പൂമെത്ത
113832  A bed of thorn  n   അസുഖകരമായ അവസ്ഥ
113665  A bed roses n   പൂമെത്ത

我必须从包含n标记

的文件中提取所有Unicode数据
import csv
with open('some.csv', newline='\t', encoding='utf-8') as f:
    reader = csv.reader(f)
    for row in reader:
        print(row)

这是我的代码,但它不起作用代码不生成输出,它没有。有什么建议吗?

Python 2.7

2 个答案:

答案 0 :(得分:0)

在使用for row in f进行迭代之前,必须先阅读csv文件。

首先,导入csv包:

import csv

之后,阅读csv文件:

with open('mycsv.csv','r') as f:
  with open('n.csv','w') as new_file:
    file_read = csv.reader(f,delimiter=';')
    for row in file_read:
      if not extract_n(row):
        new_file.write(row)

分隔符字段可以是分号,逗号,o,无论你有什么。

答案 1 :(得分:0)

the original code中," n" in row与任何内容都不匹配,因为n之前有一个制表符。如果总是有标签页,请尝试使用"\tn" in row

现在,问题是您的代码是Python 3版本。在Python 2.7中,open函数不接受newline参数,因此TypeError

这应该与制表符分隔的文件一起使用:

import csv
with open('some.csv', 'rb') as f:
    reader = csv.reader(f, delimiter='\t')
    for row in reader:
        if "n" in row:
            print(row)