如何将utf-8花式引号转换为中性引号

2024-05-19 20:12:01 发布

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

我正在编写一个小的Python脚本来解析word文档并写入csv文件。但是,有些文档有一些utf-8字符,我的脚本无法正确处理这些字符。

花哨的引号经常出现(u'\u201c')。有没有一种快速、简单(和智能)的方法可以用中性的ascii支持的引号替换它们,这样我就可以将line.encode('ascii')写入csv文件?

我试图找到左引号并替换它:

val = line.find(u'\u201c')
if val >= 0: line[val] = '"'

但无济于事:

TypeError: 'unicode' object does not support item assignment

我所描述的是一个好的策略吗?或者我应该将csv设置为支持utf-8(尽管我不确定将要读取csv的应用程序是否需要utf-8)?

谢谢你


Tags: 文件csv文档脚本智能lineasciival
2条回答

不能给字符串赋值,因为它们是不可变的,不能更改。

但是,您可以只使用regex库,这可能是最灵活的方法:

import re
newline = re.sub(u'\u201c','"',line)

您可以使用^{} package自动将所有Unicode字符转换为它们最近的纯ASCII等效字符。

from unidecode import unidecode
line = unidecode(line)

这将处理双引号的两个方向以及单引号、em破折号和其他您可能尚未发现的内容。

相关问题 更多 >