0

TSV ファイルの列インデックスに基づいてデータを解析するにはどうすればよいですか? ファイルからデータを読み取ったら、列 0 行 1 のデータを列 0 行 2 のデータでチェックし、一致する場合は列 1 行 1 のデータを取得し、一致するすべてのエントリを列 1 行 1 に追加する必要があります。

たとえば、SystemType.tsv ファイル

Actrius  1990s drama films 
Actrius  Catalan language films 
Actrius  Spanish films 
Actrius  Barcelona in fiction 
Actrius  Films directed by Ventura Pons 
Actrius  1996 films 
An_American_in_Paris     Compositions by George Gershwin 
An_American_in_Paris     Symphonic poems 
An_American_in_Paris     Grammy Hall of Fame Award recipients 

列 0 の行 1 に「Actrius」があるため、列 0 のすべての行を比較し、一致したエントリの列 1 の値を以下のようにコンマ区切り形式で比較する必要があります。

出力:

Actrius   1990s drama flims,Cataln language flims,Spanish flims,Barcelona in fiction,Films directed by Ventura Pons,1996 films
An_American_in_Paris    Compositions by George Gershwin,Symphonic poems,Grammy Hall of Fame Award recipients

私はこれを試しましたが、うまくいきません。

def finalextract():
    lines_seen = set()
    outfile = open("Output.txt","w+")
    infile = open("SystemType.tsv","r+")
    for line in infile:
        if line[0] == lines_seen[0]:
            string = line[1]+','+lines_seen[1]
            outfile.write(string)
            lines_seen.add(string)
    infile.close()
    outfile.close()

4

1 に答える 1

0

これが私が思いついたものです(Python 3ですが、唯一の違いは私の印刷機能だと思います。from __future__ import print_functionそれを使用して出力ファイルに書き込むことができます):

import collections

# I used variable "input" to hold the string from your example .tsv contents;
# you'd really want to read it in from a file.

D = collections.OrderedDict()
for line in input.splitlines():
    key, value = line.split('\t')
    if key not in D:
        D[key] = []
    D[key].append(value.strip())

for key, values in D.items():
    print(key, ','.join(values), sep='\t')

私の出力は次のとおりです。

Actrius 1990s drama films,Catalan language films,Spanish films,Barcelona in fiction,Films directed by Ventura Pons,1996 films
An_American_in_Paris    Compositions by George Gershwin,Symphonic poems,Grammy Hall of Fame Award recipients
于 2013-06-11T06:08:06.190 に答える