我有一些字符串需要将
lower
应用于点之前的第一部分,并在点之后留下华丽的效果。我的解决方案如下所示:
>>> field = "WhatEver.strinG"
>>> f"{field.split('.')[0].lower()}.{field.split('.')[1]}"
'whatever.strinG'
它有效,但我感觉写起来很糟糕。把东西分开再粘回去的感觉很奇怪。有更好的办法吗?
field = "WhatEver.strinG"
ind = field.index(".")
field[:ind].lower() + field[ind:]
# OR
f"{field[:ind].lower()}{field[ind:]}"
# 'whatever.strinG'
除了进行两次分割之外,你所拥有的都很好,但我认为使用
join
比 f 字符串更简洁。
field = 'WhatEver.strinG'
parts = field.split('.')
parts[0] = parts[0].lower()
'.'.join(parts)
使用正则表达式和
re.sub
: 的选项
import re
out = re.sub(r'^[^.]+', lambda x: x.group().lower(), field)
输出:
'whatever.strinG'