在csv文件python 2中存储unicode字符串列表

2024-04-24 13:51:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我创建了一个函数(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的文件号(文件号)

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)

Tags: 文件csv函数in列表forparsehtml
2条回答

问题出在CSV输出代码中。因为您使用的是Python 2,所以在编写以下代码之前,应该直接编码到utf-8:

    wr.writerow([c.encode('utf-8') for c in list])

或者,升级到python3以获得更集成的unicode支持。你知道吗

u前缀仅仅表示字符串是Unicode格式的。您的代码没有任何问题,它的行为也会正确(就好像它在代码中没有u)。只有在print函数中输出它才能让您知道它是一个Unicode字符串。你知道吗

相关问题 更多 >