Python: 在行文件中查找字符串,输出为空
Python: find string in line file, empty output
我搜索了 SO 以找到带有特定字符串的输入 txt 文件的第 # 行。 How do I read the first line of a string? 但是我没有得到任何输出,它是空的。我使用以下 python 代码:
with open(input_f) as input_data:
print input_f # test if reading correct file: yes
for line in input_f: # originally 'in input_data': no output
if line.split('\t', 1)[0] == 'ABC': # string before tab
#if line.startswith('ABC'): ... also empty output
print line # nothing is printed
感谢您的帮助。
您在 for 循环中迭代 input_f
而不是 input_data
:)
input_f
为文件路径; input_data
是关联的文件对象,for
循环应该使用它。
也许当您使用 input_data
时它不起作用,因为您的行中没有制表符,或者任何以 ABC
开头的行;看不到输入,不好说。
如果您想要获取文件中以 'ABC\t' 开头的第一行,那么更简单、更高效、更 Pythonic 的方法是:
with open(input_f) as input_data:
your_value = next(line for line in input_data if line.startswith('ABC\t'))
正如其他人所说,您需要遍历 input_data(文件描述符),而不是 input_f(带有文件路径的字符串)。
我搜索了 SO 以找到带有特定字符串的输入 txt 文件的第 # 行。 How do I read the first line of a string? 但是我没有得到任何输出,它是空的。我使用以下 python 代码:
with open(input_f) as input_data:
print input_f # test if reading correct file: yes
for line in input_f: # originally 'in input_data': no output
if line.split('\t', 1)[0] == 'ABC': # string before tab
#if line.startswith('ABC'): ... also empty output
print line # nothing is printed
感谢您的帮助。
您在 for 循环中迭代 input_f
而不是 input_data
:)
input_f
为文件路径; input_data
是关联的文件对象,for
循环应该使用它。
也许当您使用 input_data
时它不起作用,因为您的行中没有制表符,或者任何以 ABC
开头的行;看不到输入,不好说。
如果您想要获取文件中以 'ABC\t' 开头的第一行,那么更简单、更高效、更 Pythonic 的方法是:
with open(input_f) as input_data:
your_value = next(line for line in input_data if line.startswith('ABC\t'))
正如其他人所说,您需要遍历 input_data(文件描述符),而不是 input_f(带有文件路径的字符串)。