2013-01-12 93 views
1

我想這個管理自己...但是我coudn'tPython字符串使用正則表達式拆分

我有文字:

易{|}簡單的公寓搜索檢查{|}今天就試試吧, 確實發現{|}在所有

我想在{}從單個詞或整個句子的表達到列表中。因此,在信中它看起來就像這樣:

  • 易{|}簡單搜索
  • 公寓
  • 檢查{|}試試我們今天找到
  • ...

我使用split()的方法,但它會產生例如:

  • {見| try
  • 已經
  • 今天}

但它應該是一個單詞。 我不想{}表情打破。

任何幫助:)

+0

那你有什麼分裂? – fge

回答

4

的Python 2.x的解決方案:

>>> re.findall(r'{[^}]*}|\b\w+\b', u'{Łatwe|Proste} szukanie mieszkania {Sprawdź|Wypróbuj juz dziś}, znalezienie {wcale|w ogóle}', re.U) 
[u'{\u0141atwe|Proste}', u'szukanie', u'mieszkania', u'{Sprawd\u017a|Wypr\xf3buj juz dzi\u015b}', u'znalezienie', u'{wcale|w og\xf3le}'] 

re.U標誌是必要的,因爲在默認情況下,\b\w,和其他幾個人(\d,並且\s否定對方)只匹配ASCII字符。

的Python 3.x的溶液:

re.findall(r'{[^}]*}|\b\w+\b', '{Łatwe|Proste} szukanie mieszkania {Sprawdź|Wypróbuj juz dziś}, znalezienie {wcale|w ogóle}') 

在Python 3.x中,\b\w\d\s及其同行將執行默認上Unicode字符匹配。 re.Ustill exists for backward compatibility標誌,但它是一個多餘的說明。

+0

哇......我可從來沒有停止被重新感興趣... – ATOzTOA

+0

注意,當文本之外{}''包含變音符號就會失敗。你需要指出're.U'標誌。 – nhahtdh

+0

@nhahtdh:好,謝謝。 –

相關問題