所以我试图使用" column_matches"用于搜索包含数据的txt文件的函数,该数据已存储到数组中,用于列中的特定值,然后打印包含该值的行。
我现在的代码看起来像这样:
f = open( r'file_directory' )
a = []
for line in f:
a.append(line)
def column_matches(line, substring, which_column):
for line in a:
if column_matches(line, '4', 6):
print (line)
else:
print('low multiplicity')
在这个例子中,我试图在第7列搜索值4.但是,这当前没有打印任何内容。 我是一名初学程序员,所以这可能是非常错误的,但我会喜欢一些反馈意见,因为我无法从其他人的问题中解决这个问题。 理想情况下,程序应搜索所有行并使用特定列中的特定值打印(或保存)每一行!
编辑:示例输入:
K00889.01 0.9990 8.884922995 10.51 0.114124 89.89 1 153 0.8430 0.8210
K01009.01 0.0000 5.09246539 1.17 0.014236 89.14 1 225 0.7510 0.7270
答案 0 :(得分:0)
您现有的功能实际上没有任何逻辑来处理您尝试搜索的情况。实际上,你有if column_matches(line, '4', 6):
内部这个名为column_matches
的函数,所以你暗示它必须调用自己才能确定要采取什么行动...这在逻辑上只是形成一个无限循环(虽然在你的情况下,没有实际运行)。
这应该与您现有的方法类似,但应该按照您的意愿行事。它应该对您的实际文件结构具有相对的弹性,但如果它抛出错误,请告诉我。
data = []
with open('example.txt', 'r') as infile:
# Will automatically close the file once you're done reading it
for row in infile:
data.append(row.replace('\n', '').split())
def column_matches(line, target, column_index):
try:
file_data = int(line[column_index])
if file_data == target:
return True
else:
return False
except ValueError:
print('Not a valid number: {}'.format(line[column_index]))
return False
matching_rows = [] # To store items in data that meet our criteria
for line in data:
if column_matches(line, 4, 6):
matching_rows.append(line) # Function has to return True for this to happen