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

时间:2015-09-11 23:07:50

标签: python

我的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'))

1 个答案:

答案 0 :(得分:1)

除了Barmar关于python的评论不允许你修改字符串之外,你还要重复输入数组的副本,但是你要长达y的长度。 (你的密钥列表),而不是p的长度。

更多的pythonic方式 return ''.join([ceviri.get(c,c) for c in x])

(编辑:感谢Dair),因为我正在编辑: 澄清:这遍历x中的每个字母,如果该字母在您的ceviri字典中,则返回该值,否则使用原始字母。这会创建一个字母列表&#39; &#39;&#39; .join将所有字母组合成一个字符串。