如何在指定条件下从文件中打印一行,例如,如果某行上有251212,我将如何使我的程序仅打印该特定行。 非常感谢您的帮助。
答案 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']