Python在模式出现后添加字符串

2024-06-10 12:12:32 发布

您现在位置:Python中文网/ 问答频道 /正文

如何在模式出现后追加到字符串??我知道字符串是不可变的。但如果有办法的话?你知道吗

例如。。 输入:

condor  t   airline airline
eight   n   0   flightnumber
nine    n   0   flightnumber
five    n   0   flightnumber
hallo   t   0   sentence

预期产量:

<s> <callsign> <airline> condor </airline> 
<flightnumber> eight nine five </flightnumber> 
</callsign> hallo </s>

课程:

import re
import string
import csv
out = ''
with open('input.txt', 'r') as f:
  reader = csv.reader(f, delimiter='\t')
  for row in reader:
    if (row == "\n"):
        out += "\n"
    if 'airline' in row:
        print '<callsign> <airline>' + row[0] + '</airline></callsign>'
    if 'sentence' in row: 
        print '<s>' + row[0] + '</s>'
    if 'flightnumber' in row: 
        print '<flightnumber>' + row[0] + '</flightnumber>'

产生:

<callsign> <airline>condor</airline></callsign>
<flightnumber>eight</flightnumber>
<flightnumber>nine</flightnumber>
<flightnumber>five</flightnumber>
<s>hallo</s>

有没有办法让这个^变成预期的输出?你知道吗


Tags: 字符串inimportifreaderrowprintcondor
2条回答

您可以创建一个新字符串,将模式替换为其自身,后跟要添加的内容,然后用新字符串替换原始字符串。你知道吗

但是,从您的示例来看,您需要的不仅仅是简单的替换;您需要收集行w/flightnumber,以便可以将它们的内容合并到一个标记中。你知道吗

我认为你需要提供更多的细节,说明你想要遵循什么规则才能得到更详细的答案。你知道吗

您可以使用字符串格式和zip来执行此操作:

txt='''\
condor  t   airline airline
eight   n   0   flightnumber
nine    n   0   flightnumber
five    n   0   flightnumber
hallo   t   0   sentence'''

template='''\
<s> <callsign> <airline> {} </airline> 
<flightnumber> {} </flightnumber> 
</callsign> {} </s>'''

col=zip(*[line.split() for line in txt.splitlines()])[0]

print template.format(col[0], ' '.join(col[1:4]), col[4])

印刷品:

<s> <callsign> <airline> condor </airline> 
<flightnumber> eight nine five </flightnumber> 
</callsign> hallo </s>

相关问题 更多 >