Python 将贪婪元素替换为适当的
我有以下清单:Python 将贪婪元素替换为适当的,python,regex,Python,Regex,我有以下清单: import re l = ['Part I, Where I’M Coming From', 'Part Ii, Life Principles', 'Part Iii, Work Principles'] 我想要一个结果 l = ['Part I, Where I’M Coming From', 'Part II, Life Principles', 'Part III, Work Principles'] 我试过: In [19]:
import re
l = ['Part I, Where I’M Coming From',
'Part Ii, Life Principles',
'Part Iii, Work Principles']
我想要一个结果
l = ['Part I, Where I’M Coming From',
'Part II, Life Principles',
'Part III, Work Principles']
我试过:
In [19]: [re.sub(r'(?<=I)i+', 'I+', s) for s in l]
Out[19]:
['Part I, Where I’M Coming From',
'Part II+, Life Principles',
'Part II+, Work Principles']
[19]中的
:[re.sub(r'(?一个简单的方法是将re.sub
与回调函数一起使用。回调处理的逻辑比简单的替换更复杂。在您的情况下,您需要匹配大写字母i
后的所有小写字母i
,计算出有多少个i
,并相应地进行替换
>>> re.sub('(?<=I)(i+)', lambda x: 'I' * len(x.group()), 'Part Iii, Work Principles')
'Part III, Work Principles'
现在,您只需要将匹配的字符串大写。一个选项是简单地使用re.split
,应用str.upper
,然后使用str.format
:
import re
l = ['Part I, Where I’M Coming From',
'Part Ii, Life Principles',
'Part Iii, Work Principles']
new_l = [re.split('(?<=Part)\s|,\s+', i) for i in l]
final_l = ['{} {}, {}'.format(a, b.upper(), c) for a, b, c in new_l]
第六部分第四部分是什么情况?第四部分,我想回答这个问题。如果你的问题得到了充分的回答,你可以。这表明你的问题得到了解决,并帮助了社区,除了你是免费的代表,所以请考虑这样做。谢谢。把东西放下。
<_sre.SRE_Match object; span=(6, 8), match='ii'>
ii
2
>>> p = r'\bM{0,4}(CM|CD|D?C{0,3})(XC|XL|L?X{0,3})(IX|IV|V?I{0,3})\b'
>>> string = 'Part viiI, Work Principles'
>>> re.sub(p, lambda x: x.group().upper(), string, flags=re.IGNORECASE)
'Part VIII, Work Principles'
import re
l = ['Part I, Where I’M Coming From',
'Part Ii, Life Principles',
'Part Iii, Work Principles']
new_l = [re.split('(?<=Part)\s|,\s+', i) for i in l]
final_l = ['{} {}, {}'.format(a, b.upper(), c) for a, b, c in new_l]
l = ['Part I, Where I’M Coming From',
'Part II, Life Principles',
'Part III, Work Principles']