文字と句読点を含む文字列があります。この文字列の文字だけを他の文字に置き換えようとしています。私が開発した関数は、文字を含む文字列に対してのみ機能します。数字が含まれていると論理エラーが発生し、句読点が含まれていると実行時エラーが発生します。関数に句読点を無視させ、文字のみを操作しながらそのままにしておくことができる方法はありますか?
#Create a string variable, ABjumbler generates an alphabet shifted by x units to the right
#ABshifter converts a string using one type to another
textObject = "g fmnc wms bgblr rpylqjyrc gr zw fylb. rfyrq ufyr amknsrcpq ypc dmp. bmgle gr gl zw fylb gq glcddgagclr ylb rfyr'q ufw rfgq rcvr gq qm jmle. sqgle qrpgle.kyicrpylq() gq pcamkkclbcb. lmu ynnjw ml rfc spj."
smalltext = 'abcde'
alphabet = list(['a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'])
def ABjumbler(alphabet, x):
freshset = []
i=0
j=0
while i<(len(alphabet)-x):
freshset.extend(alphabet[i+x])
i+=1
while j<x:
freshset.extend(alphabet[j]) #extend [0]
j+=1 #change j = to 1, extends by [1], then by [2], and then terminates when it reaches x
alphabet = freshset
return alphabet
newAlphabet = ABjumbler(alphabet, 2)
def ABshifter(text, shiftedalphabet):
freshset = []
for letters in text:
position = text.index(letters)
freshset.extend(shiftedalphabet[position])
final = ''.join(freshset)
return final
print ABshifter(smalltext, newAlphabet)