有一种更 Pythonic 的方式将 `lower` 应用于字符串的第一部分?

问题描述 投票:0回答:3

我有一些字符串需要将

lower
应用于点之前的第一部分,并在点之后留下华丽的效果。我的解决方案如下所示:

>>> field = "WhatEver.strinG"
>>> f"{field.split('.')[0].lower()}.{field.split('.')[1]}"
'whatever.strinG'

它有效,但我感觉写起来很糟糕。把东西分开再粘回去的感觉很奇怪。有更好的办法吗?

python string split
3个回答
0
投票
field = "WhatEver.strinG"
ind = field.index(".")
field[:ind].lower() + field[ind:]
# OR
f"{field[:ind].lower()}{field[ind:]}"
# 'whatever.strinG'

0
投票

除了进行两次分割之外,你所拥有的都很好,但我认为使用

join
比 f 字符串更简洁。

field = 'WhatEver.strinG'
parts = field.split('.')
parts[0] = parts[0].lower()
'.'.join(parts)

0
投票

使用正则表达式和

re.sub
:

的选项
import re

out = re.sub(r'^[^.]+', lambda x: x.group().lower(), field)

输出:

'whatever.strinG'

© www.soinside.com 2019 - 2024. All rights reserved.