這可能是對正則表達式的工作,但你可以與做.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]
有點缺憾,但它的可能比對每個char進行索引檢查更有效,以查看它是否在字符串的末尾。
如果輸入字符串可以在非字母字符結束,我們可以這樣做:
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,-'
好吧,它可能比第一個版本kludgier,但嘿,它的作品。 :)
正如我前面所說,正則表達式替換可能是完成此任務的理智方式。
輸入字符串是否會以非字母字符結尾? –
在我的實際情況下,只有在字符串只包含一個非alpha字符時纔會發生,例如「 - 」 – FLab