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

如何将格式化的txt文件加载到Python中进行搜索,python,file,search,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 "v

我有一个用不同缩进格式化的文件,它有几百行长,我尝试了各种方法将它作为文件和变量加载到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
打开(''C:\Users\Samuel\Desktop\raw.txt'')作为f:
对于f中的行:
如果行=='media\u url':
打印行
其他:
打印“作废”
错误:回溯(最近一次调用上次):文件“”,第1行,在中打开('C:\Users\Samuel\Desktop\raw')作为f:IOError:[Errno 22]无效模式('r')或文件名:'C:\\Users\\Samuel\\Desktop\raw'

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

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'

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

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'

如果您试图搜索特定行,则最好避免将整个文件加载到:

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():

为了在比较之前去掉前导(和尾随)空格。

如果要搜索特定行,最好避免将整个文件加载到:

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():
以便在比较之前去掉前导(和尾随)空格

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

  • 行已附加新行。要进行比较,请去掉它们

    将open(r'C:\Users\Samuel\Desktop\raw.txt)作为f: 对于f中的行: 如果line.rstrip()=“媒体url”: 打印行 其他: 打印“作废”

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

  • 行已附加新行。要进行比较,请去掉它们

    将open(r'C:\Users\Samuel\Desktop\raw.txt)作为f: 对于f中的行: 如果line.rstrip()=“媒体url”: 打印行 其他: 打印“作废”



  • 如果文件以raw.txt的形式存储在我的桌面上,我应该如何识别它来代替'filename.txt'@user3672652*nix,Mac:
    “~/desktop/raw.txt”
    ;Windows(IIRC):
    ''C:\Documents and Settings\\Desktop\raw.txt'
    这是我在运行代码时遇到的错误,也是我以前遇到的错误:回溯(最近一次调用):文件“”,第1行,以打开('C:\Users\Samuel\Desktop\raw.txt')作为f:IOError:[Errno 22]无效模式('r')或者文件名:“C:\\Users\\Samuel\\Desktop\raw.txt'@user3672652三个引号很重要。我添加了引号,但仍然得到相同的错误。如果文件以raw.txt的形式存储在我的桌面上,我应该如何识别它来代替“filename.txt”@user3672652*nix,Mac:
    “~/Desktop/raw.txt”
    ;Windows(IIRC):
    ''C:\Documents and Settings\\Desktop\raw.txt'
    这是我在运行代码时遇到的错误,也是我以前遇到的错误:回溯(最近一次调用):文件“”,第1行,以打开('C:\Users\Samuel\Desktop\raw.txt')作为f:IOError:[Errno 22]无效模式('r')或者文件名:“C:\\Users\\Samuel\\Desktop\raw.txt'@user3672652这三个引号很重要。我添加了引号,但仍然会得到相同的错误。发布脚本后,人们将能够告诉您是否可以对其进行优化。这就是我目前为止在@Istvan Chung所做的。我仍然收到一个错误,它是这样的:Traceback(最近一次调用last):File“”,第1行,以f:IOError:[Errno 22]无效模式('r')打开('C:\Users\Samuel\Desktop\raw')或者文件名:“C:\\Users\\Samuel\\Desktop\raw”将错误消息和其他相关信息添加到您的问题中。发布您的脚本,人们将能够告诉您是否可以对其进行优化。这就是我目前在@Istvan Chung所做的。我仍然收到一个错误,上面写着:Traceback(最近一次调用last):File“”,第1行,以打开('C:\Users\Samuel\Desktop\raw')作为f:IOError:[Errno 22]无效模式('r')或文件名:'C:\\Users\\Samuel\\Desktop\raw'将错误消息和其他相关信息添加到您的问题中。请不要使用
    readlines
    。如果你真的想,只需调用
    list(contents)
    ,尽管对于单次传递,单独使用文件应该可以。请不要使用
    readlines
    。如果您真的想,只需调用
    list(contents)
    ,尽管对于单次传递,单独调用文件应该可以。我仍然收到一个错误:回溯(最近一次调用):文件“”,第1行,以打开(“r'C:\Users\Samuel\Desktop\raw.txt',“r”)作为f:IOError:[Errno 22]无效模式('r')或文件名:“r'C:\\Users\\Samuel\\Desktop\raw.txt'”路径应该有两个反斜杠或“r”前缀,但不能同时有两个。这很混乱:)我建议将数据文件与Python文件放在同一个目录中,并从那里进行调试。我仍然会收到一个错误:回溯(最近一次调用):文件“”,第1行,带open(“r'C:\Users\Samuel\Desktop\raw.txt',“r”)作为f:IOError:[Errno 22]无效模式('r')或文件名:“r'C:\\Users\\Samuel\\Desktop\raw.txt'”路径应该有两个反斜杠或“r”前缀,但不能同时有两个。这很容易混淆:)我建议将数据文件与Python文件放在同一目录中,并从那里进行调试。