They won. Elles gagnèrent.
They won. Ils ont gagné.
They won. Elles ont gagné.
Tom came. Tom est venu.
Tom died. Tom est mort.
Tom knew. Tom savait.
Tom left. Tom est parti.
Tom left. Tom partit.
Tom lied. Tom a menti.
Tom lies. Tom ment.
Tom lost. Tom a perdu.
Tom paid. Tom a payé.
我在組合一個提取第二個大寫字母(包括它)之后的所有文本的正則運算式模式時遇到了一些麻煩。
例如:
They won. Elles gagnèrent.
在這種情況下,您應該提取:
Elles gagnèrent.
這是我的代碼,但效果不佳:
import re
line = "They won. Elles gagnèrent." #for example this case
match = re.search(r"\s??(?:A|á|B|C|D|E|é|F|G|H|I|í|J|K|LL|L|M|N|?|O|ó|P|Q|R|S|T|U|ú|V|W|X|Y|Z)\s((?:\w\s) )?" , line)
n_sense = match.group()
print(repr(n_sense)) #should print "Elles gagnèrent."
uj5u.com熱心網友回復:
您可以嘗試以下代碼。
with open(file, "r") as r:
for line in r:
line = re.sub('^[^A-Z]*[A-Z][^A-Z]*','', line)
print(line, end="")
uj5u.com熱心網友回復:
這里是正則運算式:.*[A-Z].*[A-Z]([^\n] )
括號將您想要的文本包裹起來,稱為組。您將輕松了解它以及它在 python 中的作業原理。
但更好的是提供一個工具https://regex101.com/
uj5u.com熱心網友回復:
您可以按照描述搜索匹配項:
[A-Z].*?([A-Z].*)
這是一個大寫字母,后跟零個或多個任何內容,然后是另一個大寫字母,然后是任何內容,捕獲最后一組:
import unicodedata
import re
s = '''They won. Elles gagnèrent.
They won. Ils ont gagné.
They won. Elles ont gagné.
Tom came. Tom est venu.
Tom died. Tom est mort.
Tom knew. Tom savait.
Tom left. Tom est parti.
Tom left. Tom partit.
Tom lied. Tom a menti.
Tom lies. Tom ment.
?om lost. étienne a perdu. # << note accents
Tom paid. Tom a payé.'''
s = unicodedata.normalize('NFD', s)
re.findall(r'[A-Z].*?([A-Z].*)', s, re.UNICODE)
這會給你:
['Elles gagnèrent.',
'Ils ont gagné.',
'Elles ont gagné.',
'Tom est venu.',
'Tom est mort.',
'Tom savait.',
'Tom est parti.',
'Tom partit.',
'Tom a menti.',
'Tom ment.',
'étienne a perdu.',
'Tom a payé.']
如果所有這些空格都是實際文本的一部分,則可能更容易匹配或拆分。該re.UNICODE標志將允許它匹配帶有重音符號的大寫字母étienne,但您需要先確保 unicode 已標準化。
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/430374.html
下一篇:對缺少的非空屬性強制例外
