我想将字典中特定字符串之后的所有行读到字典中。我想对数千个文本文件执行此操作。
我可以'Abstract'
使用以下代码(从此答案中得到)识别并打印出特定的字符串():
for files in filepath:
with open(files, 'r') as f:
for line in f:
if 'Abstract' in line:
print line;
但是如何告诉Python开始读取仅在字符串之后的行?
当您到达要开始的行时,只需开始另一个循环即可:
for files in filepath:
with open(files, 'r') as f:
for line in f:
if 'Abstract' in line:
for line in f: # now you are at the lines you want
# do work
文件对象是其自己的迭代器,因此当到达其中的行时,'Abstract'
我们将从该行继续进行迭代,直到消耗完迭代器为止。
一个简单的例子:
gen = (n for n in xrange(8))
for x in gen:
if x == 3:
print('Starting second loop')
for x in gen:
print('In second loop', x)
else:
print('In first loop', x)
产生:
In first loop 0
In first loop 1
In first loop 2
Starting second loop
In second loop 4
In second loop 5
In second loop 6
In second loop 7
您还可以使用itertools.dropwhile来消耗所需的行:
from itertools import dropwhile
for files in filepath:
with open(files, 'r') as f:
dropped = dropwhile(lambda _line: 'Abstract' not in _line, f)
next(dropped, '')
for line in dropped:
print(line)
问题内容: 如何删除文本文件中的特定字符串? 问题答案: 找到文件。 创建一个临时文件(否则,您必须先将所有内容读取到Java的内存中)。 确定字符集。 确定您要删除的字符串。 打开文件进行读取。 打开临时文件进行写入。 逐行读取文件。 从行中删除字符串。 将其写入临时文件。 关闭读取器和写入器(最好在块中)。 删除文件。 重命名临时文件。 也可以看看: Java教程-课程:基本I / O
我在变量中有一个字符串,我想提取第二个冒号后面的数字,即。那么,我怎样才能提取那个数字呢?
问题内容: 我有一个很大的文本文件,但是没有换行符。它只包含一个很长的字符串(包含所有ASCII字符的1行巨大的字符串),但是到目前为止一切正常,因为我可以将整行读入Java的内存中,但是我想知道是否有内存由于文件变得如此之大(如5GB +),并且程序无法一次将整个文件读入内存,因此出现泄漏问题,那么在那种情况下,读取此类文件的最佳方法是什么?我们可以将巨大的线条分成2个部分,甚至多个块吗? 这是
问题内容: 我有一个名为log.txt的文本文件,它具有以下数据 第一个逗号之前的数字是指定每个项目的索引。 我想做的是读取文件,然后将给定行中字符串的一部分(例如textFiles / a.txt)替换为另一值(例如something / bob.txt)。 这就是我到目前为止 问题答案: 一种方法是使用: 您还可以使用正则表达式,或查找搜索字符串在一行中的何处。
问题内容: 有什么方法可以从文本文件中读取特定行?在API或Apache Commons中。就像是 : 我同意实现起来很简单,但是特别是当文件很大时,效率不是很高。 问题答案: 可以,但是仍然存在效率问题。 或者,您可以使用: 由于有缓冲,这将稍微更有效。 看一下并尝试跳过整行(使用正则表达式)。我无法确定它是否会更有效- 对其进行基准测试。 PS 代表 效率, 我的意思是 记忆效率
问题内容: 我试图根据此方法的输出以UTF-8或Windows-1252格式读取文件: 到目前为止,我有: 我遇到的问题是将实例转换为。 此外: 文件本身的名称()不能被认为是特定的; 有时文件名将包含UTF-8字符,有时还包含Windows-1252。文件的内容也是如此(但是,如果文件名和文件内容 始终 具有匹配的字符集)。 只有内部的逻辑可以选择要应用的字符集,因此 在 调用此方法 之前 尝试