2
s = "HiMyNameIsBob"

letters = ("A","B", "C", "D"...)

for char in s:
    if s.find(letters) is True:

我希望结果是

"Hi My Name Is Bob"

我想避免使用正则表达式方法

4

4 回答 4

10

我可能会在这里依赖字符串的字典顺序:

''.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'
于 2013-02-13T01:33:56.077 回答
2

你想要str.isupper()

>>> s = "HiMyNameIsBob"
>>> t = ''.join(c for c in s if c.isupper())
>>> print t
HMNIB
于 2013-02-13T01:37:39.503 回答
0
import sys

s = "HiMyNameIsBob"

letters = ("A","B", "C", "D"...)

for char in s:
    if s.find(letters):
        sys.stdout.write(' ')
    sys.stdout.write(char)
于 2013-02-13T01:37:53.067 回答
0
>>> re.sub('([A-Z])',' \g<1>', "HiMyNameIsBob").strip()
'Hi My Name Is Bob'
于 2013-02-14T10:03:21.123 回答