如何使用Python(编码参数)从字符串中删除重音?

时间:2012-10-07 15:00:38

标签: python

我正在尝试从csv文件中的数据中删除重音。所以我使用remove_accents函数(见下文),但为此我需要在utf-8中编码我的csv文件。 但我得到了错误'encoding' is an invalid keyword argument for this function
我已经看到我可能必须使用Python3然后执行python3 ./myscript.py? 这是正确的方法吗?或者是否有另一种方法可以删除重音而不必安装python3? 任何帮助将不胜感激

 #!/usr/bin/env python

import re
import string
import csv
import unicodedata

def remove_accents(data):
    return ''.join(x for x in unicodedata.normalize('NFKD', data) if \
    unicodedata.category(x)[0] == 'L').lower()


reader=csv.reader(open('infile.csv', 'r', encoding='utf-8'), delimiter='\t')
writer=csv.writer(open('outfile.csv', 'w', encoding='utf-8'), delimiter=',')

for line in reader:
    if line[0] != '':
        person=re.split(' ',line[0])

        first_name = person[0].strip().upper()
        first_name1=unicode(first_name)
        first_name2=remove_accents(first_name1)
        if len(person) == 2:
            last_name=person[1].strip().upper()
            line[0]=last_name
        line[15]=first_name2

    writer.writerow(line)

1 个答案:

答案 0 :(得分:1)

如果您希望能够指定编码,则需要使用codecs.open()。另外,unidecode