从文本文件中删除所有引号字符

时间:2018-11-15 01:37:48

标签: python string encoding utf-8

我正在读取具有常规python文本编码的utf8文件。我还需要删除文件中的所有引号。但是,utf8代码具有多种引号,我无法弄清楚如何消除所有引号。下面的代码是我一直试图做的一个例子。

def change_things(string, remove):
    for thing in remove:
        string = string.replace(thing, remove[thing])
    return string

其中

remove = {
'\'': '',
'\"': '',
}

不幸的是,此代码仅删除普通引号,而不去除左或右引号。有什么办法可以使用与我执行的操作类似的格式来删除所有此类引号(我认识到,还有其他更有效的方法可以从字符串中删除项目,但是鉴于代码的整体上下文,这对于我的特定项目更有意义)?

3 个答案:

答案 0 :(得分:1)

您只需在文件中键入这些类型的内容,然后将其替换为其他任何字符即可。

utf8_quotes = "“”‘’‹›«»"
mystr = 'Text with “quotes”'
mystr.replace('“', '"').replace('”', '"')

还有一些不同的单引号变体。

答案 1 :(得分:0)

https://gist.github.com/goodmami/98b0a6e2237ced0025dd处有一个Unicode引号列表。这样应该可以删除任何类型的引号。

答案 2 :(得分:0)

有多种方法可以做到这一点,正则表达式就是其中一种:

import re
newstr = re.sub(u'[\u201c\u201d\u2018\u2019]', '', oldstr)

另一种干净的方法是使用Unidecode package。这不会直接删除引号,而是将其转换为中性引号。还将所有非ASCII字符转换为与其最接近的ASCII等效字符:

from unidecode import unidecode
newstr = unidecode(oldstr)

然后,您可以使用代码删除引号。