使用正则表达式拆分Python字符串

时间:2013-01-12 10:44:41

标签: python regex split

我自己试图管理这个,但我不敢......

我有文字:

  

{Łatwe| Proste} szukanie mieszkania {Sprawdź|Wypróbujjuzdziś},   znalezienie {wcale |wogóle}

我希望从{}中的句子或整个表达式中获取单个单词到列表中。所以在列表中它将如下所示:

  • {Łatwe| Proste}
  • szukanie
  • mieszkania
  • {Sprawdź|Wypróbujjuzdzś}
  • znalezienie ......

我使用split()方法,但它产生了例如:

  • {Sprawdź|Wypróbuj
  • 一卷
  • dziś}

但它应该是一个字。 我不想在{}中断开表达式。

有任何帮助吗?:)

1 个答案:

答案 0 :(得分: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.U标记still exists for backward compatibility,但指定它是多余的。