【问题标题】:Matching and Extract from text file in Python在 Python 中从文本文件中匹配和提取
【发布时间】:2019-12-21 20:45:49
【问题描述】:

我正在尝试从包含我的“特定搜索字符串”的非常大的文件中读取,如果找到该字符串,则在该点之后提取大约 20-30 行。该文件非常大,包含许多不可打印的字符。

with open("C:/folder_1/issue_1/mem_3_logs.txt") as file:
    sli = None
    for line in file:
        if line.rstrip() == 'POOL ID, 0':
            file.seek(0) # reset pointer
            sli = islice(file, 0, 31) # get lines 3-5, o based indexing
            break

File "<ipython-input-17-cd7bb950144a>", line 1
    with open("C:/folder_1/issue_1/mem_3_logs.txt") as file:
                                                                                                       ^
SyntaxError: unexpected EOF while parsing

【问题讨论】:

  • 问题与machine-learning 无关 - 请不要向无关标签发送垃圾邮件(已删除)。

标签: python string file


【解决方案1】:

这可能是由于文件的编码。我将使用codecs.open 而不是open 函数,为此您必须首先使用import codecs。导入后,您应该使用以下语法:codecs.open("C:/folder_1/issue_1/mem_3_logs.txt", "r", "utf-8")。如果仍然不起作用,请尝试将编码从utf-8 更改为Windows-1252latin-1utf-16utf-16le。其中之一肯定会起作用:D

【讨论】:

  • codecs.open("C:/folder_1/issue_1/mem_3_logs.txt", "r", "utf-8"),做了这些更改,但是在运行时将其作为输出运行文件(' C:/folder_1/issue_1/MemoryLeak.py', wdir='C:/folder_1/issue_1')
  • 您不能在文件行上运行循环(for 循环)然后假装重置指针(file.seek)。不应该这样做。为了解决它,请尝试在开头执行 file.readlines() 以获得行列表,然后您将能够使用列表而不是文件流
  • 如果我设法帮助您解决了您的问题,请考虑支持我的消息并将其选为已接受的答案。
猜你喜欢
  • 2014-01-20
  • 2014-09-11
  • 2017-12-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-01
  • 1970-01-01
  • 2013-05-13
相关资源
最近更新 更多