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
>>> re.sub('([A-Z])',' \g<1>', "HiMyNameIsBob").strip()
'Hi My Name Is Bob'
于 2013-02-14T10:03:21.123 に答える
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 に答える