我有一个字符串,我想使用这些元素将它们转换为类的attrs。
@staticmethod
def impWords():
#re
tempFile = open('import.txt','r+')
tempFile1 = re.findall(r'\w+', tempFile.read())
for i in range(len(tempFile1)):
new=word(word.id=i,word.data=str(tempFile1[i]), word.points=int(tempFile1[i]+1))
Repo.words.append(word)
print str(Repo.words)
弹出以下错误,我怎么能修复这个我尝试了一些想法,但它没有成功。
File "D:\info\F P\Lab\lab5.7\Scramble\Repository\Rep.py", line 82, in impWords
new=word(id=int(i),data=str(tempFile1[i]), points=int(tempFile1[i]+1))
TypeError: cannot concatenate 'str' and 'int' objects
答案 0 :(得分:4)
问题在于:
int(tempFile1[i]+1)
您的tmpFile[i]
是一个字符串。您不能将整数1
添加到字符串中。您可以尝试将字符串转换为整数,然后添加一个:
int(tempFile1[i])+1
所以整条线看起来像这样:
new=word(word.id=i,word.data=str(tempFile1[i]), word.points=int(tempFile1[i])+1)
更新:无论如何,这可能不起作用。考虑这个替代方案(你必须正确定义单词类):
@staticmethod
def impWords():
with open('import.txt','r+') as f:
for i, word in enumerate(re.findall(r'\w+', f.read())):
Repo.words.append(word(id=i, data=word, points = int(word)+1))
答案 1 :(得分:1)
如果你想解决你的问题?只需使int(tempFile1 [i])+ 1,但这段代码绝对不是python方式。
f = file('your_file')
ids_words = enumerate(re.findall(r'\w', f.read()))
out_mas = [word(word.id = id, word.data = data, word.points = int(data) + 1) for id, data in ids_words]
答案 2 :(得分:0)
所以如果明白这就是你想要的
class Word(object):
def __init__(self, id, data):
self.id = id
self.data = data
f = file('your_file')
result = [Word(id, data) for id, data in enumerate(re.findall(r'\w+', f.read()))]
但是如果你想得到文件中每个单词的计数,请查看mapreduce算法