【问题标题】:Replace character in file替换文件中的字符
【发布时间】:2014-06-04 14:02:08
【问题描述】:

我决定尝试编写一个简单的 python 脚本来编辑一些 DNS 区域文件。 我有一些台词,例如:

                IN      MX    10 mail.example.com

我想用'@'替换该行的第一个空格字符,因为它在所有文件中都丢失了。我尝试使用:

line.replace('                 IN  MX', '@                IN  MX')

它不起作用。

with open("zone_file.zone", "rw") as file:
    for line in file:
        line.replace('                 IN  MX', '@                IN  MX')

我也试过列表:

mx_before = list('                IN      MX')

for line in file:
    if line == str(mx_before):
        mx_before[0] = '@'
        "".join(mx_before)

这个也没有。

我想使用一些正则表达式并验证在 IN 字符串之前没有其他字符,但我还没有意识到该怎么做。什么是最好的(不一定是最简单的)方法?

ps:我注意到空格字符的数量不固定

【问题讨论】:

  • 为什么不sedawk
  • 提示:string.replace 不会修改字符串,它会返回一个包含您替换的新字符串。如果您不将结果分配给某物,则它什么也不做。 string.join 也一样。
  • @pavel 他们很受欢迎。我没有想到它们,但我不太了解它们。

标签: python regex string python-2.7


【解决方案1】:
str="                IN      Mx"

for line in file:
    if str in line:
       line= "@"+line[1:]

试试这个演示:http://repl.it/Tbd

【讨论】:

  • 小!但是如何验证空格后的第一个字母是“IN”而不是其他字母?
  • @bomba 是的,你可以验证
  • 谢谢,但我还需要验证在 IN 字符串之前是否还有其他字符。
【解决方案2】:

试试这个:

import re

text = ' IN MX' 
text2 = re.sub('^\s', '@', text)

此函数获取第一个空格并将其替换为'@'

【讨论】:

    猜你喜欢
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-19
    • 2020-07-23
    • 2013-05-26
    • 2014-09-07
    相关资源
    最近更新 更多