![](/img/trans.png)
[英]iterating through list based on character value in each list element (python)
[英]Replace all lines containing a certain character with elements from a list, iterating through each element for each line in input
好的,所以我有一个输入文件,其中包含一些我想用不同的行替换的行(使用 python)。 例如,输入文件中第一次出现的包含 H 的行被另一个文件(称为 x)的第一行替换,输入文件中第二次出现的包含 H 的行被替换为x 文件等。 包含 H 的行的出现次数与另一个文件 (x) 中的行数相同。 这是我到目前为止所拥有的:
original = open('PROJECT-pos-1.xyz', 'r')
output = open('output.txt', 'w')
list1 = open('H.txt', 'r')
terms = list1.readlines()
text = original.read()
for term in terms:
text = text.replace('H', term, 1)
output.write(text)
original.close()
output.close()
list1.close()
在此示例中,H.txt 是包含替换列表的文件,POSITION 文件是包含要替换的行的文件。 任何帮助深表感谢。
有两种明显的方法可以做到这一点:
方法 1 :将文件 H 的内容作为列表读取,然后继续获取列表H[0]
的第一个元素,同时使用H.pop(0)
减少列表。
方法 2 :类似于方法 1。将文件 H 的内容作为列表读取,然后有一个计数器i
随着每次替换而增加,这样您就可以调用H[i]
。
我更喜欢方法2...
这是一个示例(带有列表而不是文件):
input = ['Hello', 'World', 'How', "Are", "You"]
terms = ['dog', 'cat', 'mouse']
output = []
print('input:', input)
i = 0
for w in input:
# loop through the input
if w[0]=='H':
output.append(terms[i])
i = i + 1
if i >= len(terms):
# reset counter if not enough terms
i = 0
else:
output.append(w)
print('output:', output)
结果:
input: ['Hello', 'World', 'How', 'Are', 'You']
output: ['dog', 'World', 'cat', 'Are', 'You']
OP 可以将其从列表修改为文件 readlines。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.