2013-09-15 5 views
0

У меня есть следующий код, который попадает в твиты Twitter и должен обрабатывать данные и после этого сохранять в новый файл.Python сохранить файл в csv

Это код:

#import regex 
import re 

#start process_tweet 
def processTweet(tweet): 
    # process the tweets 

    #Convert to lower case 
    tweet = tweet.lower() 
    #Convert www.* or https?://* to URL 
    tweet = re.sub('((www\.[\s]+)|(https?://[^\s]+))','URL',tweet) 
    #Convert @username to AT_USER 
    tweet = re.sub('@[^\s]+','AT_USER',tweet) 
    #Remove additional white spaces 
    tweet = re.sub('[\s]+', ' ', tweet) 
    #Replace #word with word 
    tweet = re.sub(r'#([^\s]+)', r'\1', tweet) 
    #trim 
    tweet = tweet.strip('\'"') 
    return tweet 
#end 

#Read the tweets one by one and process it 
input = open('withoutEmptylines.csv', 'rb') 
output = open('editedTweets.csv','wb') 

line = input.readline() 

while line: 
    processedTweet = processTweet(line) 
    print (processedTweet) 
    output.write(processedTweet) 
    line = input.readline() 

input.close() 
output.close() 

Мои данные в файле ввода выглядит следующим образом, так что каждый твит в одной строке:

She wants to ride my BMW the go for a ride in my BMW lol http://t.co/FeoNg48AQZ 
BMW Sees U.S. As Top Market For 2015 i8 http://t.co/kkFyiBDcaP 

моя функция работает хорошо, но я не являюсь доволен результатом, который выглядит следующим образом:

she wants to ride my bmw the go for a ride in my bmw lol URL rt AT_USER Ðun bmw es mucho? yo: bmw. -AT_USER veeergaaa!. hahahahahahahahaha nos hiciste la noche caray! 

поэтому он помещает все в один ряд, а не каждый твит в одну строку, был формат во входном файле.

Есть ли у кого-то идея получить каждый твит в одной строке?

+0

http://docs.python.org/2/library/csv.html#writer-objects – dm03514

+2

Попробуйте: 'output.write (обрабатываетсяTweet + '\ n')' –

+0

Спасибо Ashwini! Это решило мою проблему! – Max

ответ

0

С примером файлом, как это:

tweet number one 
tweet number two 
tweet number three 

Этот код:

file = open('tweets.txt') 
for line in file: 
    print line 

Производит этот вывод:

tweet number one 

tweet number two 

tweet number three 

Python читает в лицевых линиях просто отлично, но ваш скрипт заменяет их посредством замены регулярных выражений.

это регулярное выражение замещения:

tweet = re.sub('[\s]+', ' ', tweet) 

преобразовывает все ваши пробельных символов (например вкладки и новые строки) в один пробел.

Либо добавьте на лицевую линию чириканья перед вами выводом его, или изменить регулярное выражение, чтобы не подменять лицевые линии так:

tweet = re.sub('[ ]+', ' ', tweet) 

EDIT: Я положил команду тест заместительной там. предложение было исправлено.

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