2017-04-10 3 views
0

私は単語や句読点にリスト分割を持っている句読点に参加:Pythonが正しく

リスト2 = [ ' "'、 '停止'、 '右'、 'が'、 '"'、 'と' 'ジョージ'、]

私は、リストを作るために参加したい '':

' "はすぐそこを停止" ジョージは言いました。'

しかし、前に次の要素に第一音声マークを結合する効率的な方法、および(このリストの)他の句読点はありますか?

私もそれだけにもなることができるように、リストは、任意の単語や句読点のものとすることができることを言及しなければならない:「ディリー」「ダリー[

」、「(」、「それは」、 'ですa '、' hard '、' life '、'! '、') ']

またはその他のもの。

確認のために、そのリストは次のようになります。

'ディリー(それは難しい人生だ!)'

+0

明確にするために、単語間にスペースを入れて句読点間にスペースを入れない効率的な方法を探していますか?そうであれば、質問のタイトルや本文にその明示的な質問を入れてください。そうでなければ、あなたが「正しく」意味するものは誰でも推測できます。 –

+1

それはそれより複雑です。特定の句読点が、左、右、またはその両方の単語に結合されるべきかどうかをプログラムがどのように予測することができますか? – glibdud

+0

この質問はすでにここで行われています:[link](http://stackoverflow.com/questions/15950672/join-split-words-and-punctuation-with-punctuation-in-the-right-place) – Dinidiniz

答えて

0

一つだけ内蔵の文字列にです

In [144]: ' '.join(list2) 
Out[144]: '" Stop right there " said George .' 
In [145]: ''.join(list2) 
Out[145]: '"Stoprightthere"saidGeorge.' 

参加ありますそうではありませんが、それは「効率的」と表現できる唯一のものです。

私は、式を使用して、望ましくないブランクをOut[144]から削除すると想像することができます。また、list2をスキャンして、近隣の文字列で句読点を組み合わせた:テキストの書式設定のこの種を扱ういくつかのアドオンパッケージがあるかもしれません

In [146]: list3 = ['"Stop', 'right', 'there"', 'said', 'George.'] 
In [147]: ' '.join(list3) 
Out[147]: '"Stop right there" said George.' 

。しかし、基本的なPythonでは、句読点を含む文字列は他の文字列と違いはありません。

コメントlinked。引用含めるためにそれを修正

In [150]: ' '.join(join_punctuation(list2)) 
Out[150]: '" Stop right there " said George.' 

:ピーターの機能を使用すると、

In [152]: ' '.join(join_punctuation(list2)) 
Out[152]: '" Stop right there" said George.' 

は、両方の引用符が権利を取得しません。前の文字列と句読点を結合します。 ()にも同じ問題があります。いずれにせよ、それはあなたが必要とする処理の種類です。


それは左に入社として権利、および)に参加すべきである句読点としてクラス(に簡単です。しかし、"の左右の結合を区別するためには、より広い画像を見る必要があります。文中の最初の"は、右結合、次の左辺などでなければなりません。そして私はそれが頑強ではないと考えています。

+0

ありがとう!私が探していた完全な答えではありませんが、依然として非常に役に立ちました:) –

+0

「完全な答え」は、読者の練習として残されています。 :) – hpaulj