2017-08-24 12 views
0

私はリストのリストを持っています。私は内側のリストの中バイグラムを生成することができるよ、それは以下のようになります。pythonバイグラムのカンマを "_"アンダースコアに置き換えます

[[('bacteria', 'agricultur'), ('agricultur', 'soil'), ('soil', 'presenc'), ('presenc', 'sampl')],[('bacteria', 'agricultur'), ('agricultur', 'soil'), ('soil', 'presenc'), ('presenc', 'sampl')],[('nodul', 'uragensi')], [('nodul', 'stem'), ('stem', 'nodul')], [('deform', 'morphoid')]]

は今、私は私が行うことができませんアンダースコアでそれにバイグラムタプル内カンマを交換する必要があります。どのように私は上記の出力を生成することができます

TypeError: sequence item 0: expected str instance, tuple found 

:だから、私はそれを結合を使用すると、結果が

[[(bacteria_agricultur), (agricultur_soil), (soil_presenc), (presenc_sampl)],[(bacteria_agricultur), (agricultur_soil), (soil_presenc), (presenc_sampl)],[(nodul_uragensi)], [(nodul_stem), (stem_nodul)], [('deform'_'morphoid')]]

のようになります。私は

texts = ["_".join(word) for word in texts] 

エラーをエラー与えますか?おかげ

答えて

1

あなただけのネストされたリストの内包表記を使用することができます:あなたは括弧を主張する場合は

In [446]: [['_'.join(y) for y in x] for x in lst] 
Out[446]: 
[['bacteria_agricultur', 'agricultur_soil', 'soil_presenc', 'presenc_sampl'], 
['bacteria_agricultur', 'agricultur_soil', 'soil_presenc', 'presenc_sampl'], 
['nodul_uragensi'], 
['nodul_stem', 'stem_nodul'], 
['deform_morphoid']] 

、あなたが同様に単一要素のタプルを作成することができます。

In [447]: [[('_'.join(y),) for y in x] for x in lst] 
Out[447]: 
[[('bacteria_agricultur',), 
    ('agricultur_soil',), 
    ('soil_presenc',), 
    ('presenc_sampl',)], 
[('bacteria_agricultur',), 
    ('agricultur_soil',), 
    ('soil_presenc',), 
    ('presenc_sampl',)], 
[('nodul_uragensi',)], 
[('nodul_stem',), ('stem_nodul',)], 
[('deform_morphoid',)]] 
0
NewData=[] 
for bigrams in lists: 
    for grams in bigrams: 
     NewData.append(str(grams).replace("'","").replace(", ","_"))) 
関連する問題