

以下のCSVを読み込み、ツイート内容を出力する際、特定の文字列リツイートのアカウント（RT
＠＊＊＊）を含むアカウントのみを抽出し、別の列(test4)に反映させたいです。

実行環境として、Windows にPythonをインストールしています。

■CSVの内容

[code]

    test1,tets2,test3,test4
    RT @senti:学んでみたい言語は？
    
[/code]

実装したい内容

[code]

    test1,　　　　　　　　　　　     test4
    RT @senti:学んでみたい言語は？　 @senti　
    casaseis
    RT @sancho:今日は？　　　　　　　@sancho
    ocho
    RT @sacamuchi:楽しい          @sacamuchi
    
[/code]

ウェブサイトで調べながら下記のコードを参照しましたが上手くcsvの行(test1)からRTアカウントを取得できないです。

RTのアカウントをのみ抽出するにはどのように設定すれば良いでしょうか。  
お手数ですが、教えていただけますでしょうか？

[code]

    import pandas as pd
    import csv
    pd.set_option('display.max_rows', 12000)
    pd.set_option('display.width', 12000)
    pd.set_option("display.max_colwidth", 12000)
    
    df = pd.read_csv(r'/Users/catuti/Desktop/tweets_2019.csv', encoding='cp932', names=["test1", "RT @"], usecols=[0, 1], skiprows=[0], skipfooter=0, engine='python')
    df= df.replace({'\n': '<br>'}, regex=True)
    df= df.replace({'\r': ''}, regex=True)
    df = df.query('test1.str.contains("RT @") or 内容.str.contains("RT @")')
    df.to_html(r'C:/Users/catuti/Desktop/tweets_20191.csv',escape=False)
    
[/code]


CC BY-SA 4.0
2019-10-09T15:44:58.013
59605
2021-05-13T03:05:21.733
2019-10-16T01:23:13.480
3060
18859
question
python python3
csvファイルから特定の文字列のみを抽出したい


ユーザ名に対する正規表現を利用します。  
<https://stackoverflow.com/questions/8650007/regular-expression-for-twitter-
username>

[code]

    # 読み込み済みのdfは存在すると仮定
    import re
    
    regex = re.compile(r"^RT (@(\w){1,15})")
    
    def get_username(text):
        try:
            return regex.match(text).group(1)
        except AttributeError:
            return None
    
    df["test4"] = [get_username(x) for x in df["test1"]]
    df.to_csv("test_out.csv", index=False)
    
[/code]


CC BY-SA 4.0
2019-10-15T03:23:21.620
59712
2019-10-16T01:18:31.103
2019-10-16T01:18:31.103
59605
answer