我有一些文字。你可以在这里看到它。
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')]
正如您在此处看到的,可以有两种变体:
- (anytext,)(word-I-need)\t \t(form-I-need)。
- (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')]
但是,第二个必须是:
[('equus#1', 'masc abl sg'), ('equus#1', 'masc dat sg')]
你有什么建议?谢谢!