繁体   English   中英

TypeError:'str'对象不支持项目分配

[英]TypeError: 'str' object does not support item assignment

我的python程序有问题。 在此程序中,用户输入一个字符串,然后程序调用一个函数以将Unicode字母转换为最接近的ASCII符号(例如ş-> sö-> o等),但是我得到TypeError: 'str' object does not support item assignment

码:

__author__ = 'neo'
ceviri = {
    'ş':'s','Ş':'S',
    'ğ':'g','Ğ':'G',
    'ı':'i','İ':'I',
    'ü':'u','Ü':'U',
    'ö':'o','Ö':'O'
}
def karakterDegistir(x):
   p = x[:]
   y = sorted(ceviri.keys())
   u = 0
   while u < len(y):
      if p[u] in y:
         p[u] = ceviri[p[u]]
      u = u + 1
   return p
print(karakterDegistir('şeker'))

除了Barmar关于python不允许您修改字符串的注释之外,您还遍历了输入数组的副本,但是要增加y(键列表)的长度,而不是p。

更加Python化的方式将是return ''.join([ceviri.get(c,c) for c in x])

(编辑:谢谢Dair),并且由于我正在编辑:为了澄清:这遍历了x中的每个字母,如果该字母在您的ceviri词典中,请返回值,否则请使用原始字母。 这将创建一个字母列表'.join将所有字母组合成一个字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM