Python字符串无法转为大写?求解析代码未达预期输出的原因
为啥你的Python代码没输出预期结果?
嘿,我来帮你拆解下问题所在:
你列表里的那些字符串看起来像英文小写的free和codecamp,但它们根本不是真正的英文字母——而是外观相似的韩文音节字符!比如횏、횛这些都是独立的韩文字符(属于Unicode里的Hangul字符集),和英文的f、r完全是不同的码点。
Python的str.upper()方法只对那些有对应大写形式的字符起作用,比如把英文小写a转成A,但这些韩文字符本身就没有对应的英文大写形式,所以调用upper()后自然不会有任何变化,输出的还是原来的韩文字符。
怎么解决?
有两种简单的办法能得到你想要的结果:
方法1:直接用真实的英文字符(最推荐)
如果没有特殊需求,直接把列表里的字符换成真正的英文小写字母就行,修改后的代码如下:
my_list = ['free', 'codecamp'] for i in my_list: print(i.upper()) print(my_list)
运行这段代码就会输出:
FREE CODECAMP ['free', 'codecamp']
方法2:做字符映射(必须保留原特殊字符时用)
如果你因为某些原因必须保留原来的特殊字符,同时要输出对应的英文大写,可以做一个字符映射表,把每个外观相似的韩文字符对应到英文大写字母:
# 先建立字符映射关系 char_map = { '횏': 'F', '횛': 'R', '횎': 'E', '회': 'C', '횘': 'O', '획': 'D', '횊': 'A', '횖': 'M', '횙': 'P' } my_list = ['횏횛횎횎', '회횘획횎회횊횖횙'] for s in my_list: # 逐个字符替换成对应的英文大写 converted_str = ''.join([char_map[char] for char in s]) print(converted_str) print(my_list)
运行这段代码也会得到你想要的输出:
FREE CODECAMP ['횏횛횎횎', '회횘획횎회횊횖횙']
内容的提问来源于stack exchange,提问作者Arka
相关产品推荐
相关产品推荐

