如何将格式化的文本文件加载到Python中进行搜索

时间:2014-05-24 22:19:14

标签: python file search

我有一个使用不同缩进格式化的文件,该文件长达数百行,我尝试了各种方法将其作为文件和变量加载到python中,但尚未成功。什么是加载文件的有效方法。我的最终目标是加载文件,并搜索特定的文本行。

with open('''C:\Users\Samuel\Desktop\raw.txt''') as f:
    for line in f:
        if line == 'media_url':
    print line
        else:
           print "void"

Error: Traceback (most recent call last): File "<pyshell#35>", line 1, in <module> with open('''C:\Users\Samuel\Desktop\raw''') as f: IOError: [Errno 22] invalid mode ('r') or filename: 'C:\\Users\\Samuel\\Desktop\raw

3 个答案:

答案 0 :(得分:2)

以下是将文件内容读入变量的标准方法:

with open("filename.txt", "r") as f:
    contents = f.read()

如果您想要一个行列表而不是字符串中的整个文件,请使用以下命令:

with open("filename.txt", "r") as f:
    contents = list(f.read())

然后,您可以使用

搜索文本
if any("search string" in line for line in contents):
    print 'line found'

答案 1 :(得分:2)

如果您正在尝试搜索特定的行,那么最好避免加载整个文件:

with open('filename.txt') as f:
    for line in f:
        if line == 'search string':  # or perhaps: if 'search string' in line:
            # do something

如果您在忽略缩进时尝试搜索特定行的存在,则需要使用

        if line.strip() == 'search string'.strip():

在比较之前去除前导(和尾随)空格。

答案 2 :(得分:0)

  1. Python使用反斜杠表示“转义”。对于Windows路径,这意味着将路径作为“原始字符串” - “r”前缀。

  2. 行附加换行符。要比较,剥去它们。

    打开(r'C:\ Users \ Samuel \ Desktop \ raw.txt')为f:     对于f中的行:         如果line.rstrip()=='media_url':            印刷线         其他:            print“void”