读取文件中的行,如果包含字符串则打印行

Isa*_*sak 0 python text python-2.7

我有一个工作代码打开一个文件,查找一个字符串,并打印该行,如果它包含该字符串.我这样做是为了让我可以手动决定是否应该从我的数据集中删除该行.

但是如果我能告诉程序读取包含两个逗号之间的字符串的行部分会更好.

我现在的代码(见下文)

with open("dvd.txt") as f:
    for num, line in enumerate(f, 1):
        if " arnold " in line:
            num = str(num)
            print line + '' + num
Run Code Online (Sandbox Code Playgroud)

打印每一行如下:

77.224998664,2014-10-19,386.5889,the best arnold ***** ,81,dvd-action,Cheese 5gr,online-dvd-king93,0.19976,18,/media/removable/backup/2014-10-19/all_items/cheese-5gr?feedback_page=1.html,    ships from: Germany    ships to: Worldwide  ,2014-07-30,online-dvd-king,93 1
Run Code Online (Sandbox Code Playgroud)

我希望它能打印出来:

,the best arnold ***** , 1
Run Code Online (Sandbox Code Playgroud)

要么

the best arnold *****  1
Run Code Online (Sandbox Code Playgroud)

我读过这个问题,但我希望避免使用CSV.

如果出于某种原因比较难找到任何其他特定字符逗号之间的文本,或者,它会是以前,我期待的字符串后打印3个字是有用的.

wnn*_*maw 10

这很简单str.split().如下修改您的功能将产生您想要的输出.

with open("dvd.csv") as f:
    for num, line in enumerate(f, 1):
        if " arnold " in line:
            num = str(num)
            print line.split(',')[3] + '' + num 
Run Code Online (Sandbox Code Playgroud)

str.split通过指定的分隔符将字符串拆分为列表.要访问所需的列表条目,只需提供适当的索引(在您的情况下应为3).

str.format()顺便说一句,您可以使用该方法生成输出,使其更好一些:

print "{} {}".format(line.split(',')[3], num)
Run Code Online (Sandbox Code Playgroud)

这也将允许您删除,num = str(num)因为格式方法可以处理多种数据类型(而不是字符串连接,不能).