将感叹号后的字母大写
Capitalize letter after exclamation mark
我有字符串需要在“!”之后大写:
我制作了一个在一定程度上有效的脚本,但当最后一个字母是“!”时给我带来了问题。
strin "hello! there!"
strout = []
for i in range(len(strin)):
if strin[i-2] == '!':
strout.append((strin[i]).capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
newStr = "".join(strout)
输出是:你好!有!
如何防止第二个字母被大写。
[i-2]
的原因是每当循环遇到 '!'在文本中间将字母 i.
大写
一个简单的解决方案是仅在 i-2 >= 0
.
时大写
试试这个:
strin = "hello! there!"
strout = []
for i in range(len(strin)):
if i-2>=0 and strin[i-2] == '!':
strout.append((strin[i]).capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
newStr = "".join(strout)
print(newStr)
如果 i
为零或一,则 i-2
将分别映射到 -2
和 -1
。在 Python 中 -1
表示最后一个元素。所以它会像您注意到的那样将 E
大写。
从索引 2
:
开始可能更有意义
strin = "hello! there!"
strout = <b>list(strin[:2])</b>
for i in range(<b>2</b>, len(strin)):
if strin[i-2] == '!':
strout.append(strin[i].capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
result = ''.join(strout)
也就是说,在这里使用正则表达式可能更具声明性:
from re import compile as recompile
rgx = recompile(r'(?:[!]\s*|^)[a-z]')
outp = rgx.sub(lambda m: m.group(0).upper(), strin)
这将大写第一个字符,以及感叹号后面的所有字符,而不管中间的空格数。
这个怎么样:
string = "hello! there!"
'! '.join(map(lambda s: s.lstrip().capitalize(), string.split('!')))
我使用 lstrip() 以防在要大写的字符前面有 space 或 spaces。
string = 'Hello! world'
capitalize = string.split('!')[1].lstrip().capitalize() # replace .capitalize() with .upper to cap all letters
print(capitalize)
我有字符串需要在“!”之后大写:
我制作了一个在一定程度上有效的脚本,但当最后一个字母是“!”时给我带来了问题。
strin "hello! there!"
strout = []
for i in range(len(strin)):
if strin[i-2] == '!':
strout.append((strin[i]).capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
newStr = "".join(strout)
输出是:你好!有!
如何防止第二个字母被大写。
[i-2]
的原因是每当循环遇到 '!'在文本中间将字母 i.
一个简单的解决方案是仅在 i-2 >= 0
.
试试这个:
strin = "hello! there!"
strout = []
for i in range(len(strin)):
if i-2>=0 and strin[i-2] == '!':
strout.append((strin[i]).capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
newStr = "".join(strout)
print(newStr)
如果 i
为零或一,则 i-2
将分别映射到 -2
和 -1
。在 Python 中 -1
表示最后一个元素。所以它会像您注意到的那样将 E
大写。
从索引 2
:
strin = "hello! there!"
strout = <b>list(strin[:2])</b>
for i in range(<b>2</b>, len(strin)):
if strin[i-2] == '!':
strout.append(strin[i].capitalize())
else:
strout.append(strin[i])
strout[0] = strout[0].capitalize()
result = ''.join(strout)
也就是说,在这里使用正则表达式可能更具声明性:
from re import compile as recompile
rgx = recompile(r'(?:[!]\s*|^)[a-z]')
outp = rgx.sub(lambda m: m.group(0).upper(), strin)
这将大写第一个字符,以及感叹号后面的所有字符,而不管中间的空格数。
这个怎么样:
string = "hello! there!"
'! '.join(map(lambda s: s.lstrip().capitalize(), string.split('!')))
我使用 lstrip() 以防在要大写的字符前面有 space 或 spaces。
string = 'Hello! world'
capitalize = string.split('!')[1].lstrip().capitalize() # replace .capitalize() with .upper to cap all letters
print(capitalize)