从文件中打印包含字符串的行

时间:2018-07-19 16:18:54

标签: python file line display

如何在指定条件下从文件中打印一行,例如,如果某行上有251212,我将如何使我的程序仅打印该特定行。 非常感谢您的帮助。

4 个答案:

答案 0 :(得分:1)

dataLog = []
with open('yourtxtfile.txt', 'rt') as f:
    data = f.readlines()
for line in data:
    if line.__contains__('251212'):
        print(line)
        dataLog.append(line)
print(dataLog)

[编辑开始] 这是细分;

dataLog是一个列表。我们实例化此变量对象,以便在找到匹配项时可以存储它们中的每一个以供以后处理或读取。

with open('yourtxtfile.txt', 'rt') as f: 我们以rt模式打开文本文件,即“读取文本”,并将其分配给变量f

data = f.readlines() readlines()函数返回存储在变量data中的每一行的列表对象(新行“ \ n”定界符)。

for line in data:
    if line.__contains__('251212'):
        print(line)
        dataLog.append(line)
print(dataLog)

对于文本文件中的每一行,有条件地检查给定字符串(在这种情况下为“ 251212”)是否“包含”该行(请注意,这是一个特殊功能,因此具有两个下划线),然后将整行插入dataLog

答案 1 :(得分:0)

您可以在列表推导中使用条件语句,以仅获取包含模式的行:

pattern = '251212'
matching_lines = [line for line in open('file.txt').readlines() if pattern in line]
print(matching_lines)

工作原理:

  • open('file.txt')打开文本文件;
  • .readlines()读取文件中的所有行并生成字符串列表,每个字符串都是文件中的一行;
  • 最后,[line for line in open('file.txt').readlines() if pattern in line]仅选择那些包含模式的行。

答案 2 :(得分:0)

有两种方法可以实现此目的;打开文件并逐行读取文件,或使用子进程对字符串和文件运行grep

打开文件方法:

def print_line():
    myfile = open('some_file.txt', 'r')
    for line in myfile:
        if "251212" in line:
            print(line)

或使用grep(您可能需要点子安装subprocess):

import shlex
from subprocess import PIPE, Popen

cmd = "grep %s %s" % ("251212", "some_file.txt")
args = shlex.split(cmd)
process = Popen(args, stdout=PIPE, stderr=PIPE)

result = process.communicate()[0]
print(result)

如果文件很大,grep会更快,并且可以从文件所在的目录运行它。 希望这会有所帮助。

答案 3 :(得分:0)

令人惊讶的是,没有人使用过filter,如果您只想要包含特定字符串的行,则可以使用过滤器。

with open ("file.txt", "rt") as f:
    data = f.read().splitlines()

# Data place holder (Remove if you are using a file)
data = ["1", "2" , "251212", "5251212"]

codes = ["251212"]

filteredData = list(filter(lambda x: any(True for c in codes if c in x), data))

print(filteredData)

# OUT: ['251212', '5251212']