逐行替换字符串

时间:2014-09-17 01:29:01

标签: python string python-3.x

我有一个文本文件testfile.txt,文件内容(输入)如下所示:

Msg "how are you"
Msg "Subtraction is", 10-9

输出应如下所示,

Msg("how are you")
Msg("Subtraction is", 10-9)

我打开了如下文件,

fileopening = open('testfile.txt', 'r')
fileopening.readline()

for line in fileopening:
   print line.replace(' "', '(')
for line in fileopening:
   print line.replace('"', ')')

但上面的代码实际上改变了以前转换的空格和引用。如何才能使其看起来像上面显示的所需输出?我想将Msg作为单行并用Ms包裹Msg并转到下一行。

我的新输出看起来像这样:

Msg( "hello"
)

()
Msg( "dfsdkbfsd")

2 个答案:

答案 0 :(得分:1)

您可以利用括号始终插入第4位和最后位置的事实,而不是使用replace

with open('testfile.txt', 'r') as fileopening:
    next(fileopening)
    for line in fileopening:
        line = line.rstrip()
        print('{}({})'.format(line[:3], line[4:]))

顺便说一下,由于您使用的是Python3,请注意print是一个函数,因此其参数必须被括号括起来。使用不带括号的print会引发SyntaxErrors

答案 1 :(得分:0)

解决问题的一种方法如下:

with open('testfile.txt', 'r') as f:
    for line in f:
        newline = line.replace(' "', '("')
        newline = newline.replace('\n', ')\n')
        print newline

这并不是假设每一行都以Msg开头。