首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >逐行替换字符串

逐行替换字符串
EN

Stack Overflow用户
提问于 2014-09-17 01:29:00
回答 2查看 59关注 0票数 1

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

代码语言:javascript
运行
复制
Msg "how are you"
Msg "Subtraction is", 10-9

输出应该如下所示,

代码语言:javascript
运行
复制
Msg("how are you")
Msg("Subtraction is", 10-9)

我按如下方式打开文件,

代码语言:javascript
运行
复制
fileopening = open('testfile.txt', 'r')
fileopening.readline()

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

但是上面的代码实际上改变了以前转换的空间和引号。如何实现这一点,使其看起来像上面所示的期望输出?我想把Msg作为一行,用()包装Msg,然后转到下一行。

我的新输出如下所示:

代码语言:javascript
运行
复制
Msg( "hello"
)

()
Msg( "dfsdkbfsd")
EN

回答 2

Stack Overflow用户

发布于 2014-09-17 01:35:53

不使用replace,您可以利用这样一个事实:括号总是插入在第四个位置和最后一个位置:

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2014-09-17 01:43:44

解决这一问题的一个办法是:

代码语言:javascript
运行
复制
with open('testfile.txt', 'r') as f:
    for line in f:
        newline = line.replace(' "', '("')
        newline = newline.replace('\n', ')\n')
        print newline

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

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25880895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档