Capitalize first letter in string if first character is not letter?
我想把字符串中的第一个字母大写。字符串将是一个散列(因此大部分是数字),因此string.title()将不起作用,因为像85033ba6c这样的字符串将更改为85033ba6c,而不是85033ba6c,因为数字分隔单词,使title()混淆。我想把一个字符串的第一个字母大写,不管这个字母到字符串有多远。有这个功能吗?
- 你试过什么密码?
- 如果您更改哈希中的字母,它将更改其含义,使其实际上毫无用处。
- @njzk2我不会用它来检查任何东西的有效性,只是为了从有意义的数据中创建无意义的数据。
- 有人在标记为副本之前看过这篇文章吗?
- @njzk2如果您将哈希中的字母大写,编码为十六进制数字,就像非常、非常、非常、非常常见一样,其含义不会改变。
- @Blaxpirit——没错:)
- 有人在重开之前读过这篇文章吗?
- @布莱斯皮里特:问题是,答案并不是特别有用。
- @435泰铢……怎么了?被接受的那个解决了这个问题。
- @millimoose:"解决了问题"不足以进行stackoverflow。它必须是干净,聪明,简洁,健壮和有助于其他人。就像下面的阿什维尼一样。
- @THG435这些都是主观的特质,你可以在恶心的时候把头发劈开,使标记变得毫无意义。
- @米莉穆斯:让我们不要质疑显而易见的问题:这里的答案远远好于那里。所以我们重新开始回答这个问题是件好事。
- @这里的每个答案都比那里好
- @435件事是,我看不出"好得多"。它更强大(它处理一个已知的边缘情况),以不那么简单的代价,也不处理unicode输入(它与指定的用例不相关,但仍然如此),整个事情是一个清洗,希望您现在看到我所说的分头是什么意思。(我也认为稳健性是一种"很好的拥有",而不是对这样回答的要求。)
- @tkbx:谢谢;)虽然我宁愿删除我的,因为它基本上是阿什维尼的翻版。
使用re.sub和count时:
1 2 3
| >>> strs = '85033ba6c'
>>> re.sub(r'[A-Za-z]',lambda m:m.group(0).upper(),strs,1)
'85033Ba6c' |
号
在这个答案中,假设字符串中至少有一个字符,其中isalpha将返回True(否则,将引发StopIteration)
1 2
| i,letter = next(x for x in enumerate(myhash) if x[1].isalpha())
new_string = ''.join((myhash[:i],letter.upper(),myhash[i+1:])) |
在这里,我挑选出字符串中第一个字母字符的字符(和索引)。我把这个字符转换成一个大写字符,然后用它连接字符串的其余部分。