以下是我想做但不起作用的事情:
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
array = list(mystring)
for c in array:
if c in toUpper:
c = c.upper()
print(array)
"e"
和"o"
在我的数组中不是大写的。 最佳答案
您可以使用str.translate()
method使Python在一个步骤中用其他字符替换字符。
使用string.maketrans()
function将小写字符映射到其大写目标:
try:
# Python 2
from string import maketrans
except ImportError:
# Python 3 made maketrans a static method
maketrans = str.maketrans
vowels = 'aeiouy'
upper_map = maketrans(vowels, vowels.upper())
mystring.translate(upper_map)
这是替换字符串中某些字符的更快、更“正确”的方法;您始终可以将
mystring.translate()
的结果转换为列表,但我强烈怀疑您首先希望以字符串结束。演示:
>>> try:
... # Python 2
... from string import maketrans
... except ImportError:
... # Python 3 made maketrans a static method
... maketrans = str.maketrans
...
>>> vowels = 'aeiouy'
>>> upper_map = maketrans(vowels, vowels.upper())
>>> mystring = "hello world"
>>> mystring.translate(upper_map)
'hEllO wOrld'