Skip to main content
 首页 » 编程设计

python之从文本文件中解析/提取数据。无法使其工作

2025年05月04日13qq78292959

我有一个文件,我正试图从中提取信息,该文件中包含信息,并且采用整齐的逐行格式,信息以逗号分隔。

我想把它放在一个列表中,或者尽我所能从一个特定的索引中提取信息。该文件很大,超过 1000000000 行,我必须在每一行中提取相同的索引才能获得相同的信息。这些是我想要从文件中提取的散列,所以我想知道如何根据长度找到所有出现的散列。

import os 
 
os.chdir('C:\HashFiles') 
 
f = open('Part1.txt','r') 
 
file_contents=f.readlines() 
 
def linesA(): 
 
for line in file_contents: 
    lista = line.split(',') 
 
print linesA() 

这就是我到目前为止所拥有的一切,它只是将所有内容都放在一个列表中,我可以从中索引,但是我想将这些索引中的数据输出到另一个文件,但由于 for 语句,我无法做到,怎么办我绕过这个?

哇,你们太棒了,现在我遇到了一个问题,因为在存储此信息的文件中,它以提供信息的赞助商的信息开头,我如何绕过这些行从另一行开始,因为我需要从文件下方大约 100 行开始,以帮助我,因为目前我遇到索引错误并且无法弄清楚如何设置条件来应对它。我试过这个条件但没有工作:if line[:] != 15: continue

最近使用的代码:

导入csv

with open('c:/HashFiles/search_engine_primary.sql') as inf, open('c:/HashFiles/hashes.txt','w') as outf: 
for i in xrange(47): 
    inf.next()       # skip a line 
 
for line in inf: 
    data = line.split(',') 
    if str(line[0]) == 'GO': 
        continue 
    hash = data[15] 
    outf.write(hash + '\n') 

请您参考如下方法:

您可以尝试逐行处理文件

 with open('Part1.txt') as inf: 
      for line in inf: 
          # do your processing 
          # ... line.split(',') etc... 

而不是使用 readlines() 将所有数据一次读入内存。

另外,取决于你在做什么,list comprehension可能有助于从您正在阅读的文件中创建所需的输出列表。

注意:使用 with 打开文件的好处是,当您完成或遇到异常时,它会自动关闭。 p>

更新:

要跳过输入文件的前 N 行,您可以将代码更改为:

N = 100 
 
with open('Part1.txt') as inf: 
     for i, line in enumerate(inf, 1): 
         if i < N:   # if line is less than N 
            continue # skip the processing 
         print line  # process the line 

我正在使用 enumerate()自动生成行号。我从 1 开始这个计数器(如果未指定,默认值为 0)。