2017-04-10 79 views
0

我有一個列表分成字和標點符號:Python的加入標點正確

列表2 = [ '' 「 '停止', '右', '有', ''」, '說', '' 喬治',]

我想有列表加入使: ' 「停在那兒說:」 喬治'

但是,有沒有一種有效的方法將第一個語音標記加入到下一個元素中,而另一個標點符號(在此列表中)與前一個?

我還必須提到的是,列表可以是任何文字和標點,因此它也可以同樣是:

[「迪麗「蹭蹭」,「(」,「它」,' a','hard','life','!',')']

或其他任何東西。

爲了確認該名單將是:

'迪麗戴利(這是一個艱難的生活!)'

+0

所以要清楚的是,您正在尋找一種有效的方法來在詞語之間放置空格,而不是在標點符號之間放置空格?如果是這樣的話,也許你應該把這個明確的問題放到你的問題的標題和/或正文中,否則就是任何人都猜測你的「正確」是什麼意思。 –

+1

比這更復雜。預計該程序如何能夠判斷是否應該在左側,右側或兩個詞中加入特定的標點符號? – glibdud

+0

這個問題已經在這裏完成:[鏈接](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.' 

這是不對,但它是唯一可以被描述爲「高效」的東西。

我可以想象使用regex表達式從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