2014-01-24 3 views
0

Я борется с правильным решением для манипуляции строкой, которую я получаю от анализируемого объекта Json.Передача списка в функции Json

Я хочу создать список слов для исключения из строки. Я назвал этот список «игнорированием» ниже. Я не ошибаюсь, но на самом деле я не делаю то, что хочу.

Ниже мой код:

def extract_info(msg): 
    created_time = msg['created_time'].replace('T', ' ').replace('+0000', '') 
    ignore = ["you","all","has","can","that", "the"] 
    message = msg.get('message', 'Key "message" is not present.').replace('\n', '').replace(',', '').encode('utf8') 
    for ignore in message: 
     if ignore in message: 
      message = message.replace(ignore, '') 
    user_id = msg['from']['id'] 
    return (created_time, message, user_id) 



def main(): 
    ts = FacebookSearch() 
    data = ts.search('dishwasher') 
    js = json.loads(data) 
    messages = (extract_info(msg) for msg in js.get('data', [])) 
    write_csv('fb_dishwasher.csv', messages, append=True) 

Проблема с указанным кодом является то, что он делает что-либо в файл .csv он создает не писать. Это просто пустое поле.

Я хочу любые слова из списка «игнор» с пробелами в «сообщение», но теперь все у меня есть пустое пространство: <

Я не понимаю, почему это поле пустым. Также, поскольку нет ошибки, которая возникает, когда я становлюсь застрявшим. Я был бы очень признателен за любые предложения или помощь в том, что я пропустил здесь.

+0

Он ничего не печатает? Там нет ни одной инструкции печати. – aIKid

+0

. CSV-файл, который он пишет, имеет поле сообщения в виде пробела – user2748540

+0

Используйте функцию 'print'. напечатайте каждую вещь, которую вы должны проверить свои значения. – aIKid

ответ

0

Вы определяете ignore как список, а затем пытаетесь повторно использовать его в цикле for, который, вероятно, испортил все. Кроме того, вы не хотите итерировать строку!

Попробуйте вместо этого сделать:

ignore = ["you","all","has","can","that", "the"] 
    message = msg.get('message', 'Key "message" is not present.').replace('\n', '').replace(',', '').encode('utf8') 
    for word in message.split(): 
     if word in ignore: 
      message = message.replace(word, '') 
+0

Это полностью работает! Большое вам спасибо за руководство. – user2748540

Смежные вопросы