我有一个包含多行的文本文件,其编号范围从1到5,格式如下:'1,2,3,4,5'
。我想读取文本文件的每一行。在每一行我想找到'1'。
然后,我希望将列表值的值增加1,具体取决于文本文件中“1”的位置。例如。如果'1'在文本文件中的位置0,我希望列表位置0增加1(对于文本文件中的每一行)。
我当前的代码没有读取文本文件,因此它不是在每行读取'1'并执行上述功能。这是我的代码(对于冗长的解释感到抱歉):
with open("test file.txt","r+") as file:
oneNum = [0,0,0,0,0]
text = [line.rstrip("\n") for line in open("test file.txt")]
for line in text:
for counter in range(0,4):
if line[counter] == "1":
oneNum[counter] = oneNum[counter] + 1
答案 0 :(得分:1)
考虑到问题中描述的简单输入格式,可以简化(和纠正)实现:
oneNum
oneNum
像这样:
with open("test file.txt") as file:
oneNum = [0] * 5
for line in file:
index = line.find("1") // 2
oneNum[index] += 1
答案 1 :(得分:0)
with open("test file.txt", "r+") as file:
oneNum = [0 for _ in range(5)] # Easier to adjust later
for line in file:
position = [num.strip() for num in line.split(',')].index('1')
oneNum[position] += 1
答案 2 :(得分:0)
使用Python的正则表达式模块,re
使这很容易。例如,假设这是输入文件的内容:
1,2,3,4,5
2,1,3,4,5
3,2,1,4,5
4,5,1,3,2
这是代码显示如何使用re
来解决问题。请注意删除','
字符如何使用匹配字符的位置来更新相应的计数器。
import re
oneNum = [0, 0, 0, 0, 0]
with open("test file.txt") as file:
pattern = r"1"
for line in file:
line = line.strip().replace(',', '')
match = re.search(pattern, line)
if match:
counter = match.span()[0]
oneNum[counter] += 1
print(oneNum) # -> [1, 1, 2, 0, 0]