文字列からアカウントだけを取得する
実装したい内容
CSVで書き込んだ(tweet.text
)から取得したtext
のツイートを@mikipddw2on11
のみ取得したいです。
ツイート(text)
RT @mikipddw2on11: 今日の天気 #PR https://t.covIC68vSr4545
RT @mikipddw2on11:
の文字から始まりますが、別のツイートからRTがない場合
今日の天気
から文字はじめます。
取得したいのは、@mikipddw2on11
のみだけです。
文字列は毎回異なりますが、RTがない場合、セルを空白にしたいです。
実装とエラー
他の方から別の質問にて正規表現でマッチさせる方法があると教えていただきましたが、
下記の2パターンの方法でやってみましたが、下記のようにエラーが表示されます。
コード①
import tweepy
import csv
import re
consumer_key = ""
consumer_secret = ""
access_key = ""
access_secret = ""
auth = tweepy.OAuthHandler(consumer_key, consumer_secret)
auth.set_access_token(access_key, access_secret)
api = tweepy.API(auth)
#ツイート取得
tweet_data = []
data = api.get_user
for tweet in tweepy.Cursor(api.user_timeline,screen_name = "ID",exclude_replies = True).items():
tweet_data.append([tweet.id,tweet.user.screen_name,tweet.created_at,tweet.text.replace('\n',''),tweet.favorite_count,tweet.retweet_count])
pattern = re.compile(r"^RT (@(\w){1,15})")
def get_username(tweet.text):
for x in pattern.finditer(tweet.text):
return x.group(1)
#csv出力
with open('tweets.csv', 'w',newline='',encoding='utf-8_sig') as f:
writer = csv.writer(f, lineterminator='\n')
writer.writerow(["user_id","username","created_at","text","fav","RT"])
writer.writerows(tweet_data)
df["text"] = [get_username(x) for x in df["retweet_count"]]
df.to_csv("test_out.csv", index=False)
pass
エラー内容①
File "im.py", line 23
for x in regex.finditer(tweet.text):
^
別の方法②でもやってみましたが、
コード
・・・省略
pattern = re.compile(r"^RT (@(\w){1,15})")
result1 = pattern.match(tweet.text)
#csv出力
with open('tweets.csv', 'w',newline='',encoding='utf-8_sig') as f:
writer = csv.writer(f, lineterminator='\n')
writer.writerow(["user_id","username","created_at","text","fav","RT"])
writer.writerows(tweet_data)
方法②はエラー表示されませんが、tweet.text
の列text
にはRTのアカウントはないです。
長文で失礼いたしました。
もし分かる方いれば教えていただけますでしょうか?
お手数ですがよろしくお願いします。