Python3 - 从多个文本文件中提取行
Python3 - extract lines from multiple text files
谁能检查一下这个脚本有什么问题。可以像我一样使用“for 循环”吗?我有多个测量文件(1.cnv、2.cnv 等),我想从中提取以“span 1 =”和“cast”开头的行,之后我想把所有这些行到单个 summary.txt 文件。
import re
import os
errors = []
linenum = 0
pathin = r'C:\python_test'
flist = [pathin+vv for vv in os.listdir(pathin) if vv.__contains__('.cnv')==True]
find_1 = re.compile(r"span 1 =")
find_2 = re.compile(r"cast ")
for fname in flist:
for line in fname:
linenum += 1
if find_1.search(line) != None:
errors.append((linenum, line.rstrip('\n')))
if find_2.search(line) != None:
errors.append((linenum, line.rstrip('\n')))
for err in errors:
print(err[1])
with open("summary.txt", "a") as myfile: myfile.write(err[1] + "\n")
您可以列出所有文件并使用 for 循环读取带有 pandas 或 open() 的行。您可以将每个文件的输出存储在一个新列表中,并制作一个包含输出的新 csv 文件。
创建一个新列表来存储您找到的行。使用 open() 函数打开文件并在结果上调用 readlines()。然后迭代这些行并使用正则表达式匹配包含“time=”和“value2=”的行。如果匹配,将该行添加到您的列表中。对每个文件重复。处理完所有文件后,将新的行列表写入新文件
您可以使用 python 字符串方法 startswith()
。这是 documentation.
打开文件后,您可以运行以下代码:
for line in opened_file: linenum += 1
if line.startswith("time=") or line.startswith("value2="):
errors.append((linenum, line.rstrip('\n')))
谁能检查一下这个脚本有什么问题。可以像我一样使用“for 循环”吗?我有多个测量文件(1.cnv、2.cnv 等),我想从中提取以“span 1 =”和“cast”开头的行,之后我想把所有这些行到单个 summary.txt 文件。
import re
import os
errors = []
linenum = 0
pathin = r'C:\python_test'
flist = [pathin+vv for vv in os.listdir(pathin) if vv.__contains__('.cnv')==True]
find_1 = re.compile(r"span 1 =")
find_2 = re.compile(r"cast ")
for fname in flist:
for line in fname:
linenum += 1
if find_1.search(line) != None:
errors.append((linenum, line.rstrip('\n')))
if find_2.search(line) != None:
errors.append((linenum, line.rstrip('\n')))
for err in errors:
print(err[1])
with open("summary.txt", "a") as myfile: myfile.write(err[1] + "\n")
您可以列出所有文件并使用 for 循环读取带有 pandas 或 open() 的行。您可以将每个文件的输出存储在一个新列表中,并制作一个包含输出的新 csv 文件。
创建一个新列表来存储您找到的行。使用 open() 函数打开文件并在结果上调用 readlines()。然后迭代这些行并使用正则表达式匹配包含“time=”和“value2=”的行。如果匹配,将该行添加到您的列表中。对每个文件重复。处理完所有文件后,将新的行列表写入新文件
您可以使用 python 字符串方法 startswith()
。这是 documentation.
打开文件后,您可以运行以下代码:
for line in opened_file: linenum += 1
if line.startswith("time=") or line.startswith("value2="):
errors.append((linenum, line.rstrip('\n')))