我有一个很大的数据库作为文本文件(大约1GB),我正在尝试将信息行设置为一行,以便能够对这些行进行一些数据分析。数据库的格式如下
>Title 1 Line
Data 1 Line
Data 1 Line
Data 1 line
>Title 2 Line
Data 2 Line
Data 2 Line
Data 2 Line ....
我希望我的输出是
>Title 1 Line
Data 1 Line
>Title 2 Line
Data 2 Line
这是我执行此操作的代码:
#opening document using open
Data = open("Dataset.txt", "r")
#defining file name for lines
protein = Data.readlines()
#variable defining for rewrite
proteinfinal = ""
for line in protein:
if ">" in line:
proteinfinal += line
else:
proteinfinal += line.strip("/n")
#removing final and last to remove lines
#print(proteinfinal.strip())
#closing file
Data.close()
# Make a new file
Data = open("Dataset.txt", "w")
#write to file
Data.write(proteinfinal)
#close file
Data.close()
无论如何,它已经运行了一段时间,并且代码在几分钟内就可以在数据集的较小子集(10,000)行上运行。
是,不要使用readlines
,直接遍历文件对象。更重要的是,不要使用+=
循环增加列表,这会使您产生二次行为。尝试以下操作:
protein_parts = []
with open("Dataset.txt", "r") as f:
for line in f:
if ">" in line:
protein_parts.append(line)
else:
protein_parts.append(line.strip("\n"))
proteinfinal = ''.join(protein_parts)