Преобразуйте строковые элементы в атрибуты класса (py 2.7) - PullRequest
0 голосов
/ 04 февраля 2012

У меня есть строка, и я хочу использовать элементы для преобразования их в атрибуты класса.

@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

Ответы [ 3 ]

4 голосов
/ 04 февраля 2012

Проблема здесь:

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 голос
/ 04 февраля 2012

Если вы хотите решить свою проблему? Просто сделайте 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]
0 голосов
/ 04 февраля 2012

Так что, если понимаете, это то, что вы хотите

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...