如果字符串的第一个字符不是字母,如何将字符串的第一个字母大写?

3

我想要将字符串的首字母大写。该字符串将是哈希(因此大部分是数字),因此string.title()将无法使用,因为像85033ba6c这样的字符串将被更改为85033Ba6C,而不是85033Ba6c,因为数字会分隔单词,混淆了title()。我想要将字符串中的第一个字母大写,无论该字母在字符串中的位置如何。是否有此功能的函数?


如果您更改哈希中的一个字母,它将改变其含义,使其几乎无用。 - njzk2
4
有人在将其标记为重复之前阅读了这篇帖子吗? - Hunter McMillen
1
如果你在一个用十六进制数字编码的哈希中大写一个字母,这是非常非常非常非常非常常见的,那么它的含义不会改变。 - millimoose
1
有人在重新开启之前阅读过这篇帖子吗? - Oleh Prypin
1
@thg435... 怎么了?已经接受的答案解决了问题。 - millimoose
显示剩余10条评论
2个回答

10

使用 re.subcount

>>> strs = '85033ba6c'
>>> re.sub(r'[A-Za-z]',lambda m:m.group(0).upper(),strs,1)
'85033Ba6c'

1
是的,我忘记了 count。非常好! - georg

6

本答案假设字符串中至少有一个字符,其中isalpha返回True(否则会引发StopIteration

i,letter = next(x for x in enumerate(myhash) if x[1].isalpha())
new_string = ''.join((myhash[:i],letter.upper(),myhash[i+1:]))

在这里,我挑选出字符串中第一个字母字符的字符(和索引)。将该字符转换为大写字符,并将其与字符串的其余部分连接起来。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接