搜索文本文件并获取python中不包括##的所有行



我正试图编写一个python脚本,从一些建模结果中读取一个大的文本文件,获取有用的数据并将其保存为一个新数组。文本文件的输出方式是,每行都以##开头,但这并不有用。我需要一种方法来搜索和抓取所有不包括##的行。我习惯于在这种情况下使用grep-v,并通过管道连接到文件。我想用python做这件事!

非常感谢。

-Tyler

我会使用这样的东西:

fh = open(r"C:PathToFile.txt", "r")
raw_text = fh.readlines()
clean_text = []
for line in raw_text:
    if not line.startswith("##"):
        clean_text.append(line)

或者,您也可以通过一个小的修改同时清除换行符和回车非打印字符:

for line in raw_text:
    if not line.startswith("##"):
        clean_text.append(line.rstrip("rn"))

您将得到一个列表对象,其中每个元素包含一行必需的文本。您可以使用string.split()将其拆分为单个单词,这将为每个原始列表元素提供一个嵌套列表,您可以轻松地对其进行索引(当然,假设您的文本有空格)。

clean_text[4][7]

将返回第5行第8个单词。

希望这能有所帮助。

[编辑:循环中的已更正缩进]

我的建议是执行以下操作:

listoflines = [ ] 
with open(.txt, "r") as f:     # .txt = file, "r" = read
    for line in f:
        if line[:2] != "##": #Read until the second character 
            listoflines.append(line)

print listoflines

如果你觉得自己很勇敢,你也可以做以下事情,信用卡转到ALEX THORNTON:

listoflines = [l for l in f if not l.startswith('##')]

另一个答案也很好,尤其是教.startswith函数,但我认为这是一种更像蟒蛇的方式,而且还有一个优点,那就是完成文件后立即自动关闭。

相关内容

  • 没有找到相关文章

最新更新