我从网上抓取一张表格并保存为CSV文件。文本中有带法语重音的字符,导致保存时出现unicode错误:
UnicodeEncodeError: 'ascii' codec can't encode characters in position 5-6: ordinal not in range(128)
我想找到一个优雅的解决方案来保存重音字符,我可以适用于任何情况。我有时会使用以下方法:
^{pr2}$但这次不起作用,原因不得而知。我还试图替换单元格中的<sup>
标记,因此我首先使用str()
来转换它。在
以下是我的代码的相关部分:
data = [
str(td[0]).split('<sup')[0].split('>')[1].split('<')[0],
td[1].getText()
]
output.append(data)
csv_file = csv.writer(open('savedFile.csv', 'w'), delimiter=',')
for line in output:
csv_file.writerow(line)
如果
td[0]
是u"a<sup>b</sup>c"
:td[0].split('<sup')
是u"a"
。在td[0].partition('>')[2].split('<')[0]
是u"b"
。在td[0][td[0].rindex('>') + 1:]
是u"c"
。在如果这种字符串索引和匹配过于简单,您可以考虑创建一个正则表达式并将其与html标记中的文本进行匹配:
csv.reader()
和{或者您可以在使用较新版本的Python时使用
^{pr2}$with
构造:。。。文件将自动关闭。在
不管怎样csv.writer()需要由字节序列(而不是Unicode字符串)组成的行。如果有Unicode字符串,请使用.encode('utf-8')进行转换:
相关问题 更多 >
编程相关推荐