如何遍历文件并提取包含特定值的列的行?
How to loop over a file and extract lines with column contaning a certain value?
我有一个包含很多行的文件,如下所示:
one two three four
one three four five
one one three four
one two three four
我写了一个函数,需要输入每行的第一个词和最后一个词。
但仅在第二个字为"two"的情况下,
所以在最好的情况下,我应该提取某些行并删除单词,并且应该得到这个:
one four
one four
由于单词 2 可以出现在其他列中,我不能只搜索该单词并将该行提取到新文件中。我是否应该以某种方式将其转换为 csv,然后从那里开始工作?
目前我的脚本只删除文本文件的前 4 列
f = open("blah.txt", "r")
g = open("datafile_fixed.txt", "w")
for line in f:
if line.strip():
g.write(" ".join(line.split()[4:]) + "\n")
f.close()
g.close()
所以我已经删除了部分原始文件。我可以神奇地去除更多线条以删除我不想要的线条吗?最重要的是能够只留下行,然后我可以轻松删除第二列和第三列。
只需要添加一个条件来检查第二个单词是否是 two:
with open('blah.txt', mode='r') as f, open('datafile_fixed.txt', mode='w') as g:
for line in f.readlines():
w1, w2, _, w4 = line.split()
if w2 == 'two':
g.write(w1 + ' ' + w4)
这里的重点是w1, w2, _, w4 = line.split()
。 split 所做的是 return 一个字符串列表,在用指定的分隔符分隔给定的字符串之后(在这个没什么,默认情况下指的是一个 space),所以它会 return 一个列表有 4 个元素 ["one", "two", "three", "four"]
.
Python 如果您将它分配给多个变量(与列表长度相同的数字),则允许解压缩此列表,因此通过执行 w1, w2, w3, w4 = ["one", "two", "three", "four"]
您将 "one"
分配给 w1, "two"
到 w2 等等.
然后,我们只需要检查第二个单词是否是"two"
。如果是这样,我们将写入新文件。否则我们将不对这一行做任何事情并跳到循环中的下一行,做同样的事情。
我有一个包含很多行的文件,如下所示:
one two three four
one three four five
one one three four
one two three four
我写了一个函数,需要输入每行的第一个词和最后一个词。
但仅在第二个字为"two"的情况下, 所以在最好的情况下,我应该提取某些行并删除单词,并且应该得到这个:
one four
one four
由于单词 2 可以出现在其他列中,我不能只搜索该单词并将该行提取到新文件中。我是否应该以某种方式将其转换为 csv,然后从那里开始工作?
目前我的脚本只删除文本文件的前 4 列
f = open("blah.txt", "r")
g = open("datafile_fixed.txt", "w")
for line in f:
if line.strip():
g.write(" ".join(line.split()[4:]) + "\n")
f.close()
g.close()
所以我已经删除了部分原始文件。我可以神奇地去除更多线条以删除我不想要的线条吗?最重要的是能够只留下行,然后我可以轻松删除第二列和第三列。
只需要添加一个条件来检查第二个单词是否是 two:
with open('blah.txt', mode='r') as f, open('datafile_fixed.txt', mode='w') as g:
for line in f.readlines():
w1, w2, _, w4 = line.split()
if w2 == 'two':
g.write(w1 + ' ' + w4)
这里的重点是w1, w2, _, w4 = line.split()
。 split 所做的是 return 一个字符串列表,在用指定的分隔符分隔给定的字符串之后(在这个没什么,默认情况下指的是一个 space),所以它会 return 一个列表有 4 个元素 ["one", "two", "three", "four"]
.
Python 如果您将它分配给多个变量(与列表长度相同的数字),则允许解压缩此列表,因此通过执行 w1, w2, w3, w4 = ["one", "two", "three", "four"]
您将 "one"
分配给 w1, "two"
到 w2 等等.
然后,我们只需要检查第二个单词是否是"two"
。如果是这样,我们将写入新文件。否则我们将不对这一行做任何事情并跳到循环中的下一行,做同样的事情。