これはおそらく、正規表現のための仕事ですが、あなたはがは.join
でそれを行うことができ、あなただけのテストでリストの内包表記を使用する必要があります。
入力文字列は、あなたがこれを行うことができます非アルファ文字で終わることがない場合:
data = ("ABC", "-ABC", "AB-C")
for s in data:
t = ''.join([c + ',' if c.isalpha() else c for c in s])[:-1]
print('{!r}\t-> {!r}'.format(s, t))
出力
'ABC' -> 'A,B,C'
'-ABC' -> '-A,B,C'
'AB-C-' -> 'A,B,-C,-'
私は[:-1]
は少しクルージ的であることを認めるが、それはです文字列の最後にあるかどうかを調べるために、すべての文字についてインデックスチェックを行うよりも効率的です。
入力文字列が非アルファ文字で終わることができれば、我々はこれを行うことができます:
data = ("ABC", "-ABC", "AB-C", "A-BC-")
for s in data:
t = ''.join([c + ',' if c.isalpha() else c for c in s[:-1]] + [s[-1]])
print('{!r}\t-> {!r}'.format(s, t))
出力
'ABC' -> 'A,B,C'
'-ABC' -> '-A,B,C'
'AB-C' -> 'A,B,-C'
'A-BC-' -> 'A,-B,C,-'
[OK]を、それは最初のバージョンよりも、おそらくkludgierですが、ねえ、それは動作します。 :)
私が先に述べたように、正規表現の置換はおそらくこれを行うための元気な方法です。
入力文字列はアルファベット以外の文字で終了しますか? –
私の実際的なケースでは、文字列が1つの非アルファベット文字のみで構成されている場合にのみ発生します。" - " – FLab