これは、pandasライブラリが優れているタスクの種類です。
import pandas as pd
df1 = pd.read_csv("c1.txt", sep="|", header=None).dropna()
df2 = pd.read_csv("c2.txt", sep=" ", header=None)
merged = df1.merge(df2, on=1).ix[:,:-1]
merged.to_csv("merged.csv", sep="|", header=None, index=None)
いくつかの説明が続きます。まず、ファイルを DataFrames と呼ばれるオブジェクトに読み込みます。
>>> df1 = pd.read_csv("c1.txt", sep="|", header=None).dropna()
>>> df1
0 1 2 3
0 ?parallel dog numbering position
3 ?parallel cat nuucers position
6 ?non parallel honey numbering position
>>> df2 = pd.read_csv("c2.txt", sep=" ", header=None)
>>> df2
0 1 2
0 23 dog 4
1 24 cat 5
2 28 cow 7
.dropna()
データがない場合はスキップします。あるいは、df1 = df1[df1[0].str.startswith("?")]
別の方法があったでしょう。
次に、最初の列でそれらをマージします。
>>> df1.merge(df2, on=1)
0_x 1 2_x 3 0_y 2_y
0 ?parallel dog numbering position 23 4
1 ?parallel cat nuucers position 24 5
最後の列は必要ないので、スライスします。
>>> df1.merge(df2, on=1).ix[:,:-1]
0_x 1 2_x 3 0_y
0 ?parallel dog numbering position 23
1 ?parallel cat nuucers position 24
そして、 を使用して書き出すと、次のようになりto_csv
ます。
>>> !cat merged.csv
?parallel|dog|numbering|position|23
?parallel|cat|nuucers|position|24
現在、多くの単純なタスクではやり過ぎになる可能性があり、モジュールpandas
のような低レベル ツールの使用方法も学ぶことが重要です。csv
OTOH、今すぐ何かをしたいときは、とても便利です。