我有一个文本文件,基本上是这样的列表:
CustomId: 123412412
Name: blah blah
我想逐行解析此文本文件,只打印最终需要指定的我需要的行。现在,我可以解析文件并进行打印。但是,我在尝试思考可以解析并仅打印列表中所需行的逻辑时遇到了麻烦。
答案 0 :(得分:0)
def find(search, file_input_path, file_output_path):
output = open(file_output,"a")
f = open(file_input_path,'r')
lines = f.readlines()
for l in lines:
if(l == search):
output.write(s[1]))
output.close()
f.close()
用法示例:
find("Name: blah blah", "input.txt", "output.txt")
将在另一个文件中产生如下输出:
Name: blah blah
如果要查找更多行,只需在循环内调用该函数。
答案 1 :(得分:0)
在不知道您希望文件中的行满足哪种条件的情况下,可以使用以下命令迭代各个行:
with open(file_name, 'r') as f:
for line in f:
# conditional statements here
# write to output file if condition is met
要写入输出文件,可以使用以下命令:
with open(output_file, 'a') as out:
out.write( ... )
答案 2 :(得分:0)
使用您提供的信息,似乎可以使用-
file = open('your-file', 'r')
outputFile = open('outputFile.txt', 'w')
for line in file:
if #put condition here ( Eg : if 'hello' in line: ):
outputFile.write(line)
file.close()
outputFile.close()
您可以将所需行的条件放在for循环的if
子句中。
希望它可以解决您的问题!
答案 3 :(得分:0)
您可以执行以下操作:
l=[]
with open("data.txt") as finp, open("output.txt","w") as fout:
cid,name=None,None
for line in finp:
key,sepa,value=line.partition(":")
if "CustomId" in key:
cid=value.strip()
elif "Name" in key:
name=value.strip()
if cid and name: # neither is None
l.append((cid,name))
fout.write( f"ID:{cid}, Name:{name}\n" )
cid,name=None,None # it helps detecting wrong line pairing
这是一个将数据存储到列表和文件中的示例。您可以离开列表处理,还可以添加过滤条件,例如:
if "CustomId" in key and "1234567"==key.strip():
...