当前位置: 首页 > 面试题库 >

使用指定的分隔符为换行符读取文件

刘乐童
2023-03-14
问题内容

我有一个文件,其中用分号“”分隔行.。我想逐行阅读此文件,其中行应基于.而不是换行符的存在。

一种方法是:

f = open('file','r')
for line in f.read().strip().split('.'):
   #....do some work
f.close()

但是,如果我的文件太大,则内存使用效率不高。与其一起阅读整个文件,不如逐行阅读。

open支持参数’newline’,但是此参数仅用None, '', '\n', '\r', and '\r\n'作此处提到的输入。

有什么方法可以有效地读取文件行,但要基于预先指定的分隔符吗?


问题答案:

您可以使用生成器:

def myreadlines(f, newline):
  buf = ""
  while True:
    while newline in buf:
      pos = buf.index(newline)
      yield buf[:pos]
      buf = buf[pos + len(newline):]
    chunk = f.read(4096)
    if not chunk:
      yield buf
      break
    buf += chunk

with open('file') as f:
  for line in myreadlines(f, "."):
    print line


 类似资料:
  • 问题内容: 我正在尝试确定在Python中读取换行符分隔文件时处理换行符的最佳方法。 我想出的是以下代码,包括一次性代码以进行测试。 有什么建议吗? 问题答案:

  • 我在使用Pandas读取选项卡分隔的文件时遇到问题。 所有单元格值都有双引号,但对于某些行,有一个额外的双引号打断了整个过程。例如: 我得到的错误是:错误标记数据。C错误:第8355行预期有31个字段,SAW58 我使用的代码是: 它适用于其余文件,但不适用于出现额外双引号的文件。

  • 问题内容: 我正在尝试读取以下形式的大文本文件: 我想在文本文件中将此字符串作为一个大的Java字符串读取。这可能吗?我知道使用split方法。 它可以逐行读取它,但我真正需要的是在“ +”号处分割此长文本字符串。之后,我想将其存储为数组,arraylist,列表,… 谁能帮我这个?因为互联网上的所有信息都只是逐行读取文件。提前致谢! 问题答案: 您可以使用或任何IO类读取文件。假设文件中包含该字

  • 问题内容: 我有一个CSV文件,其格式如下: “ FieldName1”,“ FieldName2”,“ FieldName3”,“ FieldName4” “ 04/13/2010 14:45:07.008”,“ 7.59484916392”,“ 10”,“ 6.552373” “ 04/13/2010 14:45:22.010 ”,“ 6.55478493312”,“ 9”,“ 3.53785

  • 问题内容: 我需要定界包含新行的字符串。我将如何实现?请参考下面的代码。 输入: 所需的输出: 我尝试了以下方法: 问题答案: 方法应该为您提供确切的信息。

  • 目前,我正在逐行读取由制表符分隔的文件,将每行中的项目拆分,并通过硬编码值50查找由50个项目组成的制表符分隔的行,然后创建数据表。 问题:以制表符分隔的源文件在拆分后有时有50或53项以制表符分隔的行。需要直接读取以制表符分隔的源文件中具有最大制表符分隔符的行,然后继续我的逻辑。 我的C代码