【发布时间】:2022-01-22 22:03:17
【问题描述】:
我正在使用 Visual Studio Code 用 Python 替换文本。 我正在使用带有原始文本的源文件并将其转换为带有新文本的新文件。
我想在后面的新文本中添加引号。例如:
原文:set vlans xxx vlan-id xxx
新文本:vlan xxx name "xxx"(在该行的剩余部分添加引号,如此处所示)
这是我的代码:
with open("SanitizedFinal_E4300.txt", "rt") as fin:
with open("output6.txt", "wt") as fout:
for line in fin:
line = line.replace('set vlans', 'vlan').replace('vlan-id', 'name')
fout.write(line)
有没有办法在“名称”后面的行中为文本添加引号?
编辑:
我试过这段代码:
with open("SanitizedFinal_E4300.txt", "rt") as fin:
with open("output6.txt", "wt") as fout:
for line in fin:
line = line.replace('set vlans', 'vlan').replace('vlan-id', 'name')
words = line.split()
words[-1] = '"' + words[-1] + '"'
line = ' '.join(words)
fout.write(line)
并收到此错误:
line 124, in <module>
words[-1] = '"' + words[-1] + '"'
IndexError: list index out of range
我也试过这段代码,但没有成功:
with open("SanitizedFinal_E4300.txt", "rt") as fin:
with open("output6.txt", "wt") as fout:
for line in fin:
line = line.replace('set vlans', 'vlan').replace('vlan-id', 'name')
import re
t = 'set vlans xxx vlan-id xxx'
re.sub(r'set vlans(.*)vlan-id (.*)', r'vlan\1names "\2"', t)
'vlan xxx names "xxx"'
同样,我的目标是在行尾的字符(vlan 编号)中自动添加双引号。
例如:
原文:set protocols mstp configuration-name Building 2021.Rm402.access.mstp.zzz
所需文本:设置协议 mstp 配置名称“Building 2021.Rm402.access.mstp.zzz”
【问题讨论】:
-
您可以尝试
split根据空格拆分单词,然后添加引号,然后将join再次组合在一起。或者,您可以查看更常用的方法,例如正则表达式 -
在正则表达式中捕获整行,并使用
\1和\2替换字符串来填充捕获组,使用re.sub()方法 -
@ProQ 你能发布一个例子来说明它的外观/工作原理吗?
-
cesarv 涵盖了正则表达式之一,所以我将展示拆分/加入一个。抱歉,我一开始没有时间写完整的答案 - 因此评论
-
另外,为了让您更好地习惯使用该网站,如果您添加您已经尝试过的内容,或者如果您没有尝试过任何内容,您查看过哪些页面会有所帮助资源。如果您有此信息,我会支持您的问题。
标签: python replace quotes double-quotes