这段代码应该通过一个列表并对项目执行一些格式化,例如删除引号,然后将其保存到另一个列表。
class process:
def rchr(string_i, asciivalue):
string_o = ()
for i in range(len(string_i)):
if ord(string_i[i]) != asciivalue:
string_o += string_i[i]
return string_o
def flist(self, list_i):
cache = ()
cache_list = []
index = 0
for line in list_i:
cache = line.split('\t')
cache[0] = process.rchr(str(cache[0]), 34)
cache_list.append(cache[0])
cache_list[index] = cache
index += 1
cache_list.sort()
return cache_list
p = process()
list1a = ['cow', 'dog', 'sheep']
list1 = p.flist(list1a)
print (list1)
然而;它在string_o += string_i[i]
处窒息并发出以下错误:
Traceback (most recent call last):
File "/Projects/Python/safafa.py", line 23, in <module>
list1 = p.flist(list1a)
File "/Projects/Python/safafa.py", line 14, in flist
cacbe[0] = process.rchr(str(cache[0]), 34)
File "/Projects/Python/safafa.py", line 7, in rchr
string_o += string_i[i]
TypeError: can only concatenate tuple (not "str") to tuple
答案 0 :(得分:2)
我认为您需要string_o = ""
而不是string_o = ()
您的问题是您希望string_o
成为字符串,以便可以在其上附加其他字符串。将其设置为()
会使其成为元组,而这是一种与字符串不兼容的数据类型。
答案 1 :(得分:2)
除了上一个答案之外,还有更多的pythonic方式:
string_o = ''.join(c for c in string_i if ord(c) != asciivalue)
它简短易读。
答案 2 :(得分:1)
要添加Olivier的答案,我认为整个代码可以替换为:
import itertools
output = [i.replace('"','') for i in list(itertools.chain(*(x.split('\t') for x in input)))]
仅使用python 2.x进行测试。