使用 Python 向行中的文本添加引号
Adding quotes to text in line using Python
我正在使用 Visual Studio 代码将文本替换为 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)
有没有办法在 'name' 之后的行中为文本添加引号?
编辑:
我试过这段代码:
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'vlannames ""', t)
'vlan xxx names "xxx"'
同样,我的目标是自动为行尾的字符(vlan 号)添加双引号。
例如:
原文:set protocols mstp configuration-name Building 2021.Rm402.access.mstp.zzz
所需文本:设置协议 mstp 配置名称“Building 2021.Rm402.access.mstp.zzz”
使用以下正则表达式:
>>> import re
>>> t = 'set vlans xxx vlan-id xxx'
>>> re.sub(r'set vlans(.*)vlan-id (.*)', r'vlannames ""', t)
'vlan xxx names "xxx"'
搜索模式(第一个参数)中的括号用于创建可在替换模式(第二个参数)中使用的组。因此,搜索模式中的第一个 (.*)
匹配项将通过 </code> 包含在替换模式中;第二个也是一样。</p>
<p>编辑:
我分享的代码只是一个如何使用正则表达式的例子。以下是您应该如何使用它。</p>
<pre><code>import re
# whatever imports and code you have down to...
with open("SanitizedFinal_E4300.txt", "rt") as fin, open("output6.txt", "wt") as fout:
for line in fin:
line = re.sub(r'set vlans(.*)vlan-id (.*)', r'vlannames ""', line)
fout.write(line)
重要提示:如果您需要修改的行格式与您分享的原始文本示例有任何不同,您需要对正则表达式进行调整。
首先,我们将文本分成单词,用白色 space 分割(split
默认情况下所做的)。
然后,我们取最后一个词,为其添加引号,并在每个词之间加入 space:
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()
# print(words) # ['vlan', 'xxx', 'name', 'xxx']
if words: # if the line is empty, just output the empty line
words[-1] = '"' + words[-1] + '"'
line = ' '.join(words)
# print(line) # vlan xxx name "xxx"
fout.write(line)
警告:在您的问题中,您说您希望输出为 vlan xxx name "xxx"
,在第一个 [=] 之后有 两个 spaces 13=]。这个结果每个单词之间只有一个space。
我正在使用 Visual Studio 代码将文本替换为 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)
有没有办法在 'name' 之后的行中为文本添加引号?
编辑:
我试过这段代码:
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'vlannames ""', t)
'vlan xxx names "xxx"'
同样,我的目标是自动为行尾的字符(vlan 号)添加双引号。
例如:
原文:set protocols mstp configuration-name Building 2021.Rm402.access.mstp.zzz
所需文本:设置协议 mstp 配置名称“Building 2021.Rm402.access.mstp.zzz”
使用以下正则表达式:
>>> import re
>>> t = 'set vlans xxx vlan-id xxx'
>>> re.sub(r'set vlans(.*)vlan-id (.*)', r'vlannames ""', t)
'vlan xxx names "xxx"'
搜索模式(第一个参数)中的括号用于创建可在替换模式(第二个参数)中使用的组。因此,搜索模式中的第一个 (.*)
匹配项将通过 </code> 包含在替换模式中;第二个也是一样。</p>
<p>编辑:
我分享的代码只是一个如何使用正则表达式的例子。以下是您应该如何使用它。</p>
<pre><code>import re
# whatever imports and code you have down to...
with open("SanitizedFinal_E4300.txt", "rt") as fin, open("output6.txt", "wt") as fout:
for line in fin:
line = re.sub(r'set vlans(.*)vlan-id (.*)', r'vlannames ""', line)
fout.write(line)
重要提示:如果您需要修改的行格式与您分享的原始文本示例有任何不同,您需要对正则表达式进行调整。
首先,我们将文本分成单词,用白色 space 分割(split
默认情况下所做的)。
然后,我们取最后一个词,为其添加引号,并在每个词之间加入 space:
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()
# print(words) # ['vlan', 'xxx', 'name', 'xxx']
if words: # if the line is empty, just output the empty line
words[-1] = '"' + words[-1] + '"'
line = ' '.join(words)
# print(line) # vlan xxx name "xxx"
fout.write(line)
警告:在您的问题中,您说您希望输出为 vlan xxx name "xxx"
,在第一个 [=] 之后有 两个 spaces 13=]。这个结果每个单词之间只有一个space。