如何解析python中的文本文件并打印到另一个文本文件或json文件中?

时间:2018-07-19 18:10:39

标签: python text-files

我有一个文本文件,基本上是这样的列表:

CustomId: 123412412
Name: blah blah

我想逐行解析此文本文件,只打印最终需要指定的我需要的行。现在,我可以解析文件并进行打印。但是,我在尝试思考可以解析并仅打印列表中所需行的逻辑时遇到了麻烦。

4 个答案:

答案 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():
           ...