我创建了一个函数(parse_html(param)
),它返回如下所示的列表,
list = [u'John', u'Muchia', u'Prozessoptimierung Fahrwiderst\xe4nde']
如果我返回print list[2]
,并且在我的函数中,它会给我Prozessoptimierung Fahrwiderstände
这是完美的,但在列表中显示不同
问题在于我返回整个列表return list
我想避开'u'。我想存储一个字符串列表,并且还应该出现像äö和ü这样的Unicode字符。
fname [x]是HTML文件的来源,其中x是文件编号,从0增加到count(file_number)
list=[]
newlist=[]
list = parse_html(fname[7])
for row in list:
drow = row.encode('utf-8')
newlist.append(drow)
print newlist
目标是将返回的列表保存为CSV文件。每次选择新文件(fname)时,都会创建列表,并将新列表添加到先前创建的csv文件中。
我正在做一些非常错误的事情,我可以意识到这一点,我的脑袋也很疼。请帮忙。
for x in range(0,count):
list = parse_html(fname[x])
with open('output.csv', 'wb') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(list)
错误:
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 132: ordinal not in range(1
28)
wr.writerow([c.encode('utf-8') for c in list]) # instead `wr.writerow(list)
答案 0 :(得分:0)
u
前缀仅表示该字符串采用Unicode格式。您的代码没有任何问题,并且代码中的行为正确(就好像它没有u
)。它只在print函数中输出,让你知道它是一个Unicode字符串。
答案 1 :(得分:0)
问题出在您的CSV输出代码中。由于您使用的是Python 2,因此在编写之前应直接编码为utf-8:
wr.writerow([c.encode('utf-8') for c in list])
或者,升级到Python 3以获得更多集成的unicode支持。