1

多くの行を含むテキストファイルでは、類似の単語で始まり一意ではない行をすべて抽出する必要があります。 私は、同じ内容(重複する行)またはわずかに異なる内容(最初の単語の後ろ)を持つ可能性がある、同じものから始まる行を探します。私はこの例がそれを説明することを願っています(彼らは一意であるため、この例で廃棄類似の行のテキストファイルをフィルタする

hungarian-american 
hungarian-german lied ms 
hungarian-german ms 
hungarian-speaking areas 
hungarian-speaking regions 
hungary 
hungary and slovakia 
hungary and slovakia 

hungarica 
hungry i 
hunnis, william 
hunt, l. 

をしている:私はこれらの行を探しています

hungarian-american 
hungarian-german lied 
hungarian-german 
hungarian-speaking areas 
hungarian-speaking regions 
hungarica 
hungary 
hungary and slovakia 
hungary and slovakia 
hungry i 
hunnis, william 
hunt, l. 

:これは、例えば、このようなファイルのうちだろう同じような言葉で始まらない)。

この問題にどのように対処できますか?私はPythonや正規表現に多少慣れていますが、おそらくもっと簡単なソルトがありますか?ご協力いただきありがとうございます!

import re 
from collections import defaultdict 

dic = defaultdict(list) 

lines = """hungarian-american 
hungarian-german lied 
hungarian-german 
hungarian-speaking areas 
hungarian-speaking regions 
hungarica 
hungary 
hungary and slovakia 
hungary and slovakia 
hungry i 
hunnis, william 
hunt, l.""".split('\n') 

for line in lines: 
    # you should preferably use a word tokenizer such as the ones availables in NTLK 
    # but this line gives the idea 
    try: 
     first_word = re.split(',|;|-|\s', line)[0] 
    except IndexError: 
     continue 
    # Grouping similar lines 
    dic[first_word].append(line) 

# Showing only similar lines which are not unique : 
for word, lst in dic.items(): 
    if len(lst) > 1: 
     print '\n'.join(lst) 
+2

がどのように '希望リスト – Bijoy

+0

申し訳@Bijoyに記載されているhungary'が、私はあなたが求めているものを理解していないん – kbecker87

答えて

1

この

は、トリックを行う必要があります。
関連する問題