s = "HiMyNameIsBob"
letters = ("A","B", "C", "D"...)
for char in s:
if s.find(letters) is True:
我希望结果是
"Hi My Name Is Bob"
我想避免使用正则表达式方法
s = "HiMyNameIsBob"
letters = ("A","B", "C", "D"...)
for char in s:
if s.find(letters) is True:
我希望结果是
"Hi My Name Is Bob"
我想避免使用正则表达式方法
我可能会在这里依赖字符串的字典顺序:
''.join( ' '+x if 'A' <= x <= 'Z' else x for x in s )
演示:
>>> s = "HiMyNameIsBob"
>>> ''.join( ' '+x if 'A' <= x <= 'Z' else x for x in s )
' Hi My Name Is Bob'
如果你不想要前导空格,你总是可以.strip()
得到结果。
检查字符是否为大写的更好方法是使用isupper()
函数(感谢 Esthete 和 wim 指出这一点):
>>> ''.join( ' '+x if x.isupper() else x for x in s )
' Hi My Name Is Bob'
你想要str.isupper()。
>>> s = "HiMyNameIsBob"
>>> t = ''.join(c for c in s if c.isupper())
>>> print t
HMNIB
import sys
s = "HiMyNameIsBob"
letters = ("A","B", "C", "D"...)
for char in s:
if s.find(letters):
sys.stdout.write(' ')
sys.stdout.write(char)
>>> re.sub('([A-Z])',' \g<1>', "HiMyNameIsBob").strip()
'Hi My Name Is Bob'