2016-03-27 12 views
-3

";"で区切られた最初の単語に続く余分な単語を削除したい。そして、各ライン上に並んでいるsequnceのただ一つのコピーを返す:Pythonを使用してファイル内の行の重複単語を検索して削除する

データ:

XTY1;XTY3;XTY3;XTY3;XTY2;XTY1;XTY1;XTY1 
XTY3;XTY4;XTY4;XTY3;XTY2;XTY7;XTY7;XTY1 
XTY10;XTY3;XTY4;XTY2;XTY2;XTY11;XTY11;XTY1 

必要な出力:次のように

XTY1;XTY3;XTY2;XTY1 
XTY3;XTY4;XTY3;XTY2;XTY7;XTY1 
XTY10;XTY3;XTY4;XTY2;XTY11 

私のコードは次のとおりです。

for line in cluster3_urls: 
    list_of_words = line.split(',') 
for i in list_of_words: 
    next_word = list_of_words[list_of_words.index(i) + 1] 
    if list_of_words == next_word: 
     list_of_words=list_of_words 
     print list_of_words 

誰かが私のコードがうまくいかなかった理由を教えてもらえますか?

+0

に行を変更してみてください 代わりにセミコロンのコンマに基づいspitingしていることだと思いますか』;」、'? – TigerhawkT3

+0

例の最後の単語の説明は何ですか? –

+0

お詫び申し上げます。私は分割するつもりだった ";" – user27976

答えて

3

コードには多くの問題があります。 itertools.groupby考えてみましょう:

間違った区切り文字で分割されているので、あなたのコードが今失敗している
from itertools import groupby 

input = 'XTYYY1;XTYYY3;XTYYY3;XTYYY3;XTYYY2;XTYYY1;XTYYY1;XTYYY1' 

output = ';'.join([k for k, g in groupby(input.split(';'))]) 

# output: 'XTYYY1;XTYYY3;XTYYY2;XTYYY1' 
+0

あなたのご協力と時間をいただきありがとうございます。あなたのソリューションは私にとってうまくいった。 – user27976

0

。また、一度修正すると、最後の単語に達したときにコードがさらにnext_word = list_of_words[list_of_words.index(i) + 1]に失敗します。配列の要素と配列を比較し、その矢印をそれ自体に設定する(何もしない)ifステートメントでは、残りのコードは意味をなさない。コードを完全に書き直すことをお勧めします。

2

私が代わりに ``の「 『問題は、あなたがなぜあなたは`に分割されている

list_of_words = line.split(';') 
関連する問題