3 回答
TA贡献1812条经验 获得超5个赞
使用与您想要小写的模式匹配的正则表达式。
import re
def maybe_downcase(s):
if re.match(r'^[A-Z_-]+(?:\s\(.*\))?$', s):
return s.lower()
else:
return s
output = [maybe_downcase(x) for x in L1]
正则表达式匹配一系列大写字母、下划线和连字符,可选地后跟空格和括号中的任何内容。
TA贡献1806条经验 获得超5个赞
您可以执行您在问题中提到的类似方法,但检查字符串中出现的任何小写字母,而不是匹配大写字母(没有导入):
[x if any(y.islower() for y in x.split('(')[0]) else x.lower() for x in L1]
输出:
['threshold_band',
'threshold_band (copy)',
'ticker',
'ticker-two',
'Title C (copy)',
'Title C (copy) (copy)']
TA贡献1794条经验 获得超7个赞
这会给你正确的输出吗?
L1 = ['THRESHOLD_BAND', 'THRESHOLD_BAND (copy)', 'TICKER', 'TICKER-TWO',
'Title C (copy)', 'Title C (copy) (copy)']
L2 = []
for strng in L1:
s0, *s1 = strng.split('(', 1)
s0 = s0.lower() if s0 == s0.upper() else s0
L2.append('('.join((s0, *s1)))
print(*L2, sep='\n')
输出:
threshold_band
threshold_band (copy)
ticker
ticker-two
Title C (copy)
Title C (copy) (copy)
添加回答
举报