Python 比较并提取行,然后发送到新文件
假设有一个文件包含以下内容:Python 比较并提取行,然后发送到新文件,python,bash,shell,functional-programming,Python,Bash,Shell,Functional Programming,假设有一个文件包含以下内容: Hello ========= last: paul last: susy last: king last: jorge last: henry last: ida Goodbye ========= first: paul first: susy first: charles first: lincoln first: ida Example output last: paul first: paul last: susy first: sus
Hello
=========
last: paul
last: susy
last: king
last: jorge
last: henry
last: ida
Goodbye
=========
first: paul
first: susy
first: charles
first: lincoln
first: ida
Example output
last: paul
first: paul
last: susy
first: susy
last: ida
first: ida
如何用bash或python编写一个脚本来提取所有匹配的名称并推送到一个新文件,而不考虑开头的最后一个和第一个关键字?假设您的文件名为test.txt 为了稍作解释,第一部分为first_name和last_name创建了两个空集。您可以使用这些列表,但检查成员身份,这是稍后使用姓氏中的if name可以更快地检查集合的成员身份。它的O1表示集合,On表示列表,其中n是列表的大小 Python的一个很好的特性是,您可以自然地迭代文件对象的行。line.split[1]部分使用空格分隔行,并从0中获取第二个元素Python索引 虽然集合的成员身份检查速度更快,但它们是无序的,因此不会保留文件中名称的顺序。为了构造输出_名称,我使用了所谓的。最后一部分将结果写入文件 说文件是names.txt 在Python中:
import re
import os
f = open('names.txt')
lines = f.readlines()
last_names = first_names = result = []
for line in lines:
if line.startswith('last:'):
last_names.append(line[6:])
elif line.startswith('first:'):
first_names.append(line[7:])
result = [name for name in last_names if name in first_names]
#do whatever you want to with result
看
import re
import os
f = open('names.txt')
lines = f.readlines()
last_names = first_names = result = []
for line in lines:
if line.startswith('last:'):
last_names.append(line[6:])
elif line.startswith('first:'):
first_names.append(line[7:])
result = [name for name in last_names if name in first_names]
#do whatever you want to with result
awk 'FNR==NR {a[FNR""]=$0; next}{print a[FNR""]"\n"$0}' file1 file2