我是python的新手。 我写了一个pigLatin代码,我需要代码来忽略非字符,即我希望它们保持在字符串中的位置。因此,例如,当使用#my; 1myth'当它被转换为piglatin时,我希望它是例如1ythmway,其中数字不受影响。我尝试使用正则表达式,但我只能让它适用于第一个条件。 以下是我的代码:
import re
Vowels =("aeiouAEIOU")
y = input("\n Enter sentence ")
x = y.split()
for word in x:
a =re.sub('[^a-zA-Z]+', '',word);
if a[0] in Vowels:
word +='hay'
elif all(char not in Vowels for char in word):
word = word[1:] + word[0]
word += 'way'
elif word[0] not in Vowels:
for i, j in enumerate(word):
if j in Vowels:break
word = word[i:] + word[:i]
word += 'ay'
print(word, end = ' ')
答案 0 :(得分:0)
你可以像下面这样设置一个尝试 - 除外条件:(这只是一个例子。根据你的情况实施)
words = '1myth'
w = list(words)
for i in w:
try:
if type(int(i)) is int:
pass
except:
print(i) //You can write your character trasforming conditions here.
这样你可以忽略所有非字符。我希望它有用。
答案 1 :(得分:0)
使用isdigit()作为Patrick建议,更容易忽略数字的方法。在这里,我将所有字符替换为" n"显示数字不变。
>>> word = '2math'
>>> new_word = ''
>>> for char in word:
... if char.isdigit ():
... new_word += char
... else:
... new_word += char.replace(char, 'n')
...
>>> new_word
'2nnnn'