为什么我不能使用`strip(' \"')`删除引号?

时间:2015-06-29 14:29:33

标签: python python-3.x

我只能使用str.strip('\"')删除左引号:

with open(filename, 'r') as fp :
    for line in fp.readlines() :
        print(line)
        line = line.strip('\"')
        print(line)

部分结果:

"Route d'Espagne"

Route d'Espagne"

使用line.replace('\"', '')获得正确的结果:

"Route d'Espagne"

Route d'Espagne

任何人都可以解释一下吗?

1 个答案:

答案 0 :(得分:9)

您的行不会结束带引号。新行分隔符是行的一部分,从文件读取时不会被删除,因此除非在要删除的字符集中包含\n,否则"将保留。

在诊断字符串问题时,使用print(repr(line))甚至print(ascii(line))生成调试输出,以使不可打印或非ASCII代码点可见:

>>> line = '"Route d\'Espagne"\n'
>>> print(line)
"Route d'Espagne"

>>> print(repr(line))
'"Route d\'Espagne"\n'

\n添加到str.strip()参数:

line = line.strip('"\n')

演示:

>>> line.strip('"')
'Route d\'Espagne"\n'
>>> line.strip('"\n')
"Route d'Espagne"
>>> print(line.strip('"\n'))
Route d'Espagne