用于替换不起作用的文本的Python代码

时间:2014-06-25 15:26:38

标签: python string python-2.7 replace

我的代码就是这个。

import fileinput
for line in fileinput.FileInput("aaaa.txt",inplace=1):
     map_dict = {'\N':'999999999', '[':'(', '&':'&'}
     line = ''.join(map_dict.get(c,c) for c in line)
     print line,

我用aaaa.txt进行了实验,但它根本没有替换任何东西。

我知道的更简单的代码是

import fileinput
for line in fileinput.FileInput("aaaa.txt",inplace=1):
    line = line.replace("\N","999999999")
    print line,

但是我想让第一个代码工作,因为它取代了多个东西。

1 个答案:

答案 0 :(得分:2)

\N是两个字符串。 (与'\\N'相同)

>>> '\N'
'\\N'
>>> len('\N')
2

但迭代字符串会产生单个字符串。

>>> for ch in 'ab\Ncd':
...     print ch
...
a
b
\
N
c
d

代码永远不会替换\后跟N

多次呼叫替换怎么样?

for old, new in map_dict.iteritems():
    line = line.replace(old, new)