如何在ch的第一次(且仅第一次)出现后将一个字符串插入另一个字符串

2024-04-25 00:16:46 发布

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

使用Python3,我需要在文件的每一行插入字符串BA|,如下所示:

AZ|C|DTD
E|GS|H

但只有在第一次出现|之后。因此,插入字符串后,文件应如下所示:

AZ|BA|C|DTD
E|BA|GS|H

我可以试着把一个字符串插入另一个字符串的某个位置,但单词的长度不是规则的。我可以在找到|之后插入字符串,但这可能会导致在同一行中多次插入字符串。你知道吗


Tags: 文件字符串gs规则单词python3azdtd
3条回答

line.index('|')给出第一次出现

outfile = open('outfile.txt', 'w')
for line in open('inputfile.txt'):
    split_index = line.index('|')
    line = line[:split_index] + '|BA' + line[:split_index]
    outfile.write(line)

或者用split

outfile = open('outfile.txt', 'w')
for line in open('inputfile.txt'):
    line = line.split('|')
    line.insert(1, 'BA')
    line = '|'.join(line)
    outfile.write(line)

使用str.replace()。你知道吗

for line in file:
   line = line.replace("|", "|BA|", 1)
   # print line, write it to new file, etc.

你不需要正则表达式。使用str.partition

In [87]: str_ = 'AZ|C|DTD'

# Gets the partitions spitted on first `|`
# generates 3 element tuple: `('AZ', '|', 'C|DTD')`
In [88]: parts = str_.partition('|')

# Concatenate after joining first two elements with
# empty string, `BA|` and last element
In [89]: ''.join(parts[:2]) + 'BA|' + parts[2]
Out[89]: 'AZ|BA|C|DTD'

对于文件:

with open('file.txt') as f:
    for line in f:
        parts = line.strip().partition('|')
        new_line = ''.join(parts[:2]) + 'BA|' + parts[2] 

相关问题 更多 >