1

我试图自己解决这个问题,但我无法...

我有文字:

{Łatwe|Proste} szukanie mieszkania {Sprawdź|Wypróbuj juz dziś}, znalezienie {wcale|w ogóle}

我想从句子或整个表达式中获取单个单词{}到列表中。所以在列表中它看起来像这样:

  • {Łatwe|Proste}
  • 苏卡涅
  • 米斯卡尼亚
  • {Sprawdź|Wypróbuj juz dziś}
  • znalezien...

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

  • {Sprawdź|Wypróbuj
  • 朱兹
  • dziś}

但应该是一个字。我不想破坏{}.

有什么帮助吗?:)

4

1 回答 1

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.Uflag 是必需的,因为默认情况下,\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.Uflag仍然存在是为了向后兼容,但指定它是多余的。

于 2013-01-12T10:47:38.743 回答