2016-11-26 11 views
-2

私はpythonを使用してツイートテキストからのコメントを抽出するコードに取り組んでいます。pythonを使って言葉を抽出するには?

パラメータはツイートテキストです。この関数は、ツイートのすべての記述がツイートに表示されている順序で返されます。返されたリスト内の各言及は、最初の言及シンボルが取り除かなければならない、とリストが遭遇したすべての言及含まれている必要があります - ユーザーが一度tweet.Here内よりも多く言及されている場合は2例であり、繰り返しを含めた:

>>>extract_mentions('@AndreaTantaros- You are a true journalistic\ 
professional. I so agree with what you say. Keep up the great\ 
[email protected] ') 
['AndreaTantaros','RepJohnLewis'] 
>>>extract_mentions('@CPAC For all the closet #libertarians attending \ 
#CPAC2016 , I'll be there Thurs/Fri -- speaking Thurs. a.m. on the main\ 
stage. Look me up! @CPAC') 
['CPAC','CPAC'] 

言及は「@」記号で始まり、スペース文字、句読点、またはツイートの終わりまでのすべての英数字を含みます(ただしこれには含まれません)。

文字列からのコメントをどのように抽出できますか?と申し訳ありませんが、私は正規表現について学んでいない、他の方法はありますか?

答えて

2

使用regex

import re 
input_string = '@AndreaTantaros- You are a true journalistic professional. I so agree with what you say. Keep up the great [email protected] ' 
result = re.findall("@([a-zA-Z0-9]{1,15})", input_string) 

出力:

re.sub("[\w][email protected][\w]+\.[c][o][m]", "", input_string) 
+0

someone'sのメールアドレスが何か - [email protected]ですか? –

+0

これは、次のように正規表現を '.'の後ろに3文字だけマッチさせることによって簡単に変えることができます:' [\ w] + @ [\ w] + \。[a-z] {3} '。それはOPによって彼女が望むものをまったく言及していない。 @WasiAhmad – Jarvis

+0

メールアドレスが 'hello @ example.ninja'の場合はどうなりますか?または 'hello @ example.nl'?または 'hello.there @ example.com'ですか?あるいは 'hello + there @ example.com'ですか? – Carpetsmoker

0

あなたはそれとして、次の正規表現を使用することができます。['AndreaTantaros', 'RepJohnLewis']

あなたは単に行う、最初の電子メール・アドレスを削除する場合電子メールアドレスを無視します。

(^|[^@\w])@(\w{1,15}) 

コード例

import re 

text = "@RayFranco is answering to @jjconti, this is a real '@username83' but this is [email protected], and this is a @probablyfaketwitterusername"; 

result = re.findall("(^|[^@\w])@(\w{1,15})", text) 

print(result); 

これは返します、さえずりは、Twitterのユーザー名のために最大15個の文字を使用できる

[('', 'RayFranco'), (' ', 'jjconti'), ("'", 'username83'), (' ', 'probablyfaketwi')] 

注意。 〜に基づいてTwitter specs

ユーザー名は15文字を超えることはできません。あなたの本名は (20文字)以上にすることができますが、ユーザ名は のために短くしておきます。上記のように、ユーザ名には英数字(英数字: A〜Z、数字は0〜9)を使用できますが、アンダースコアは例外です。 希望するユーザー名に、記号、 のダッシュまたはスペースが含まれていないことを確認します。

関連する問題