2016-05-01 13 views
3
l = [['John'],['rides'],['bike'],['with'],['Mr.','Brown'],] 

私はそれのようなリストオブジェクトを持っていると仮定します。 for文を使用せずに文字列に行を追加するにはどうすればよいですか?Python - 行全体のオブジェクトを取得する最も簡単な方法

マイ所望の出力:

print("my sentence:" + ?) 
print("people:" + ? + ", " + ?) 

my sentence: John rides bike with Mr. Brown 
people: John, Mr. Brown 

MAJOR EDIT:

私の問題は、ときであるので、私は、テキストベースのドキュメントを分析して、名前付きエンティティとの情報を抽出しているこの質問を作成する理由私は、そのようなリストの中で "名前+姓"または "曖昧な組織"のような連続する固有名詞をグループ化します:

[[u'Milletvekili', u'Ay\u015fe'], [u'oraya'], [u'Merve', u'Han\u0131m'], [u'ile'], [u'gitti'], [u'.']] 

私は、リストオブジェクトと自分のデータセットを比較し、エンティティタイプを記述するアルゴリズムを持っています。 if文が[u'Milletvekili '、u'Ay \ u015fe']が人名であると決定した後。

if gettype(arr[i][0].split("'")[0]) == "Özel İsim": 
     newarr.append("[Person: " + str(arr[i][0]) + "]") 

私は私の新しいリストで[:ブラウン氏パーソン]のように私の出力で私のことであろうことを追加します。 「合計」として

[Person: [u'Milletvekili', u'Ay\u015fe']] 

答えて

4

かなりエレガントされないが、代わりにあなたがfunctools.partial()str.join()map()を使用することができます:しかし、私はグループでは、私はいつもそのように私の出力を持つ単語を資産計上しなければならない

>>> from functools import partial 
>>> " ".join(map(partial(str.join, " "), l)) 
'John rides bike with Mr. Brown' 
+0

これも探しているが、出力が何であるかイム[パーソン:[u'Mr 'u'Brown']]任意のアイデアは、なぜ私は印刷オブジェクト内のカント行 ? –

+1

@ArdaNalbant申し訳ありませんが、言うのは難しいです。現時点でどのような入力データがあり、どのような出力が得られているかは明確ではありません。質問を編集して明確にすることはできますか?本当にありがとう。 – alecxe

+0

私の質問を編集して、私は私が言うことができるすべてが[人:[氏名]、[ブラウン]]の代わりに[人:[ブラウン] –

4

借入this answerから:

" ".join(sum(l, [])) 
Out[130]: 'John rides bike with Mr. Brown' 
+2

非常にエレガントな溶液! – MaxU

+0

ちょうど私が欲しいものですが、私はこれを私の2つのプリント機能にどのように実装できますか?私はジョンとブラウンを使用して、このように使用することはできません。print( "people names:" + "、"。(sum(arr [0]、arr [4])))) –

+0

また、上のコードを試してみてください。ユニコード形式のリストを使用する場合はどうしますか?TypeError:リスト(「unicode」ではなく)のみを連結してリストにすることができます –

3

リストを平らにし、その後、' 'で参加します。

>>> ' '.join(s for sub in l for s in sub) 
'John rides bike with Mr. Brown' 

それともitertools.chainとは:

>>> from itertools import chain 
>>> ' '.join(chain(*l)) 
'John rides bike with Mr. Brown' 
関連する問題