【问题标题】:python regex replace returns an extra \npython regex replace 返回一个额外的 \n
【发布时间】:2012-08-17 13:24:37
【问题描述】:

我正在尝试用 python 2.6 替换文件中的一些文本

但是,它返回一个额外的换行符,这是我的代码:

for line in fileinput.input('/etc/php5/apache2/php.ini', inplace=True):
   replace = re.sub(r'(post_max_size =).[0-9]+(M)', r'\1 64\2', line)
   print replace

输入:

post_max_size = 6M
sdfsdfsd
post_max_size = 4M
sdfsdf
post_max_size = 164M
dfsdfsdfsdfsdf

输出:

post_max_size = 64M

sdfsdfsd

post_max_size = 64M

sdfsdf

post_max_size = 64M

dfsdfsdfsdfsdf

【问题讨论】:

    标签: python file search replace


    【解决方案1】:

    您看到的额外输出来自print,如果您将文件写回,您应该不会看到额外的换行符。

    试试这个:print replace,

    这是一个小问题,但您也应该选择一个不同的名称,因为replace 是标准库中字符串方法的名称。

    【讨论】:

    • 我刚刚试了一下,发现文件返回空白。不过感谢您的及时答复。
    • “返回空白”是什么意思?
    • 也许你没有写出正确的字符串。你应该创建一个新问题(在你accept an answer 到这个问题之后)。
    【解决方案2】:

    你的正则表达式很好。 print 添加换行符。请改用write

    【讨论】:

      【解决方案3】:

      尝试: print replace, 代替。尾随逗号抑制换行符(但添加尾随空格)。为了完全控制,请改用__future__ 的打印功能。

      【讨论】:

      • 谢谢 cdarke。它工作正常。但是,我不了解_future_。你能解释一下吗?对不起,我对 python 这么陌生。
      • @Rabit;如果您是 Python 新手,请不要太担心新的 print 函数。它是 Python 3 的默认设置,从(我认为)Python 2.6 开始,如果您:from __future__ import print_function,您可以使用它。它更易于使用并提供更多控制,但在您迁移到 Python 3 之前可能会更好。
      猜你喜欢
      • 2019-01-25
      • 2017-02-07
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 2021-08-28
      • 2022-12-12
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多