我正试图编写一个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函数,但我认为这是一种更像蟒蛇的方式,而且还有一个优点,那就是完成文件后立即自动关闭。