【问题标题】:Python code for replacing texts not working用于替换文本的 Python 代码不起作用
【发布时间】:2014-08-16 06:10:43
【问题描述】:

我的代码是这样的。

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,

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

【问题讨论】:

标签: python string python-2.7 replace


【解决方案1】:

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

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

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

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

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

调用replace多次怎么样?

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

【讨论】:

  • 谢谢。但问题是该程序无法完成其他替换工作,例如 '[':'(' /N 单独似乎不是问题的根源。
  • @user3123767,您尝试过我建议的方式吗? (print
  • @user3123767,您应该将print 语句放在for 循环之后。
  • 表示意外缩进。所以我改变了缩进。然后它说 unindent 不匹配任何外部缩进级别。
  • 谢谢。我标记了你的答案。顺便说一句,为什么我的问题中的第一个代码不起作用?
猜你喜欢
  • 1970-01-01
  • 2016-10-04
  • 1970-01-01
  • 2017-12-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-26
相关资源
最近更新 更多