2014-11-03 2 views
-2

У меня есть скрипт python, который удаляет RT-ретвит из твита, # hash-тега. Теперь я хочу удалить имя пользователя, а именно твит, у которого есть @userxyz: ie @ symbol, за которым следует имя пользователя а затем: (двоеточие) .. Я просто хочу удалить таких пользователей: например, если твит «@bugun: MHP'li Kemallettin Yılmaz Bank Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw}« Я хочу удалить @bugun: и получить результат, как «MHP'li Kemallettin Йылмаз Банк Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw»Удалить пользователя из твита

Вот мой код для хэш и удаления RT от твит:

# coding:utf-8 
import sys, re 
x = open("test.txt", "r") 
for line in x: 
    z = lambda line: re.compile('\#').sub('', re.compile('RT @').sub('@', line, count=1).strip()) 
    print z(line) 
    saveFile = open("test_result.txt", "a") 
    saveFile.write(z(line)) 
    saveFile.write("\n") 
    saveFile.close() 
+0

Не знаю твит часть, но если '@' гарантированно будет пользователь, простой, как регулярное выражение '@ [^:] + : 'все, что вам нужно. – sln

+0

В вашем примере '^ @ \ w +:' Будет ловить только первое имя пользователя – Tico

ответ

0

Используя образец, вы дали:

"@bugun: MHP'li Kemallettin Йылмаз Банк Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw}"

код (Python 3.4):

# coding:utf-8 
import sys, re 
x = open("test.txt", "r") 
for line in x: 
    z = lambda line: re.compile('\#').sub('', re.compile('^@\w+: ').sub('', line, count=1).strip()) 
    print (z(line)) 
    saveFile = open("test_result.txt", "a") 
    saveFile.write(z(line)) 
    saveFile.write("\n") 
    saveFile.close() 

Выведет:

MHP’li Kemallettin Yılmaz Bank Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw

0

Все, что у вас есть, это найти правильное regexpr. Кстати, я включил hashtag в ваш пример и немного изменил ваш код, чтобы удалить хэштегов тоже - не уверен, что это действительно то, что вы хотели. Функция ниже удалит любой хэштег и имя пользователя, следующего за «RT @», а затем «:». Надеюсь, это поможет.

import sys, re 

tweet_text = "RT @bugun: MHP’li Kemallettin Yılmaz #Hello Bank Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw" 

def transform_tweet(line): 
    return re.compile('#\w+ ').sub('', re.compile('RT @\w+: ').sub('', line, count=1)).strip() 

Запуск transform_tweet(tweet_text), у меня есть это:

"MHP’li Kemallettin Yılmaz Bank Asya'ya yapılan intihardır http://t.co/AKxMgMuuSs @bugun http://t.co/fyJbr098tw" 
Смежные вопросы