0

私はいくつかのテキストを持っています。ここで見ることができます。

str1 = '{5723647 9 aqua\t \tfem nom/voc pl}{5723647 9 aqua\t \tfem dat sg}{5723647 9 aqua\t \tfem gen sg}'
str2 = '{27224035 2 equo_,equus#1\t \tmasc abl sg}{27224035 2 equo_,equus#1\t \tmasc dat sg}'

これが私が取得したいものです:

result1 = [('aqua', 'fem nom/voc pl'), ('aqua', 'fem dat sg'), ('aqua', 'fem gen sg')]
result2 = [('equus#1', 'masc abl sg'), ('equus#1', 'masc dat sg')]

ご覧のとおり、次の 2 つのバリエーションがあります。

  1. (anytext,)(必要な単語)\t \t(必要なフォーム)。
  2. (anytext )(word-I-need)\t \t(form-I-need).

これが私が試した正規表現です:

pattern = re.compile(r'\d* \d*(?:,| )(.*?)\t \t(.*?)}')

ここに私が得るものがあります:

[('aqua', 'fem nom/voc pl'), ('aqua', 'fem dat sg'), ('aqua', 'fem gen sg')]
[('equo_,equus#1', 'masc abl sg'), ('equo_,equus#1', 'masc dat sg')]

ただし、2 番目は次のようにする必要があります。

[('equus#1', 'masc abl sg'), ('equus#1', 'masc dat sg')]

何をアドバイスできますか?ありがとう!

4

3 に答える 3

0

このようなものがうまくいくかもしれません

([^{\s,]*)\t \t([^}]*)
于 2012-06-09T18:27:40.217 に答える