python 如何将字符串中的某些字符大写
python how to uppercase some characters in string
这是我想做但不起作用的方法:
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"
在我的数组中不是大写字母。
您没有对原始列表进行更改。您仅对循环变量 c
进行更改。作为解决方法,您可以尝试使用 enumerate
.
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
array = list(mystring)
for i,c in enumerate(array):
if c in toUpper:
array[i] = c.upper()
print(array)
输出
['h', 'E', 'l', 'l', 'O', ' ', 'w', 'O', 'r', 'l', 'd']
注意:如果你想要hEllO wOrld
作为答案,你不妨使用join
,如''.join(array)
像这样使用生成器表达式:
newstring = ''.join(c.upper() if c in toUpper else c for c in mystring)
你可以这样做:
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
>>> ''.join([c.upper() if c in toUpper else c for c in mystring])
hEllO wOrld
问题是 al c
没有用于任何用途,这不是通过引用传递。
我会这样做,对于初学者:
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
array = []
for c in mystring:
if c in toUpper:
c = c.upper()
array.append(c)
print(''.join(array))
您可以使用 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)
这是替换字符串中某些字符的更快、更 'correct' 的方法;你总是可以把 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'
这样就可以了。请记住,字符串是不可变的,因此您需要在构建新字符串时做一些变体才能使其正常工作。
myString = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
newString = reduce(lambda s, l: s.replace(l, l.upper()), toUpper, myString)
请试试这个
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
array = list(mystring)
new_string = [x.upper() if x in toUpper else x for x in array ]
new_string = ''.join(new_string)
print new_string
简单的方法
name='india is my country and indians are my brothers and sisters'
vowles='a','e','i','o','u'
for name_1 in name:
if name_1 in vowles:
b=name_1.upper()
print(b,end='')
else:
print(name_1,end='')
这是代码:
name='india is my country and indians are my brothers and sisters'
vowles='a','e','i','o','u'
for name_1 in name:
if name_1 in vowles:
b=name_1.upper()
print(b,end='')
else:
print(name_1,end='')
这是我想做但不起作用的方法:
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"
在我的数组中不是大写字母。
您没有对原始列表进行更改。您仅对循环变量 c
进行更改。作为解决方法,您可以尝试使用 enumerate
.
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
array = list(mystring)
for i,c in enumerate(array):
if c in toUpper:
array[i] = c.upper()
print(array)
输出
['h', 'E', 'l', 'l', 'O', ' ', 'w', 'O', 'r', 'l', 'd']
注意:如果你想要hEllO wOrld
作为答案,你不妨使用join
,如''.join(array)
像这样使用生成器表达式:
newstring = ''.join(c.upper() if c in toUpper else c for c in mystring)
你可以这样做:
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
>>> ''.join([c.upper() if c in toUpper else c for c in mystring])
hEllO wOrld
问题是 al c
没有用于任何用途,这不是通过引用传递。
我会这样做,对于初学者:
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
array = []
for c in mystring:
if c in toUpper:
c = c.upper()
array.append(c)
print(''.join(array))
您可以使用 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)
这是替换字符串中某些字符的更快、更 'correct' 的方法;你总是可以把 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'
这样就可以了。请记住,字符串是不可变的,因此您需要在构建新字符串时做一些变体才能使其正常工作。
myString = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
newString = reduce(lambda s, l: s.replace(l, l.upper()), toUpper, myString)
请试试这个
mystring = "hello world"
toUpper = ['a', 'e', 'i', 'o', 'u', 'y']
array = list(mystring)
new_string = [x.upper() if x in toUpper else x for x in array ]
new_string = ''.join(new_string)
print new_string
简单的方法
name='india is my country and indians are my brothers and sisters'
vowles='a','e','i','o','u'
for name_1 in name:
if name_1 in vowles:
b=name_1.upper()
print(b,end='')
else:
print(name_1,end='')
这是代码:
name='india is my country and indians are my brothers and sisters'
vowles='a','e','i','o','u'
for name_1 in name:
if name_1 in vowles:
b=name_1.upper()
print(b,end='')
else:
print(name_1,end='')