質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

1325閲覧

正規表現でurlを除こうとしているがうまくいかない

saiy

総合スコア2

Google Colaboratory

Google Colaboratoryとは、無償のJupyterノートブック環境。教育や研究機関の機械学習の普及のためのGoogleの研究プロジェクトです。PythonやNumpyといった機械学習で要する大方の環境がすでに構築されており、コードの記述・実行、解析の保存・共有などが可能です。

正規表現

正規表現とは特定の文字列によるパターンマッチングを行う際に用いられる宣言型プログラミングです。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2021/07/13 00:04

編集2021/07/25 14:27

前提・実現したいこと

tweepyを使用してツイートを取得するプログラムを作成しています。
取得したツイートに付くurlが邪魔なので正規表現でurlを除く部分を書きました。

現在エラーメッセージは出ていないのですが、#問題箇所 部分の正規表現がうまくいっていないのか、csvからurlが除去できていません。
初心者なためかなり問題があると思うのですが、よろしくお願いいたします。

”しかし毎度expected string or bytes-like objectとエラーメッセージが出てしまいます。
print(type(tweet_list))で型の確認をしたのですがstr型で問題ないように思いました”
この問題はtweet_listが特殊な型だったのでjson.dumpsでエンコードして解決しました。

該当のソースコード

python

1import tweepy 2import csv 3import json 4import re 5 6consumer_key = "**********************" 7consumer_secret = "**********************" 8access_key = "**********************" 9access_secret = "**********************" 10 11auth = tweepy.OAuthHandler(consumer_key, consumer_secret) 12auth.set_access_token(access_key, access_secret) 13api = tweepy.API(auth) 14 15 16#ツイート取得 17tweet_list = [] 18 19for tweet in tweepy.Cursor(api.user_timeline,screen_name = "NHK_PR",exclude_replies = False,).items(): 20 tweet_list.append([tweet.text.replace('\n','')]) 21 22#問題箇所 23enc = json.dumps(tweet_list,ensure_ascii=False) 24for tweet in enc: 25 re.sub("https?://", "", enc) 26 27#csv出力 28with open('tweet.csv', 'w',newline='',encoding='utf-8') as f: 29 writer = csv.writer(f, lineterminator='\n') 30 writer.writerows(tweet_list) 31pass

補足情報(FW/ツールのバージョンなど)

Google Colaboratory を使用しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

ArMigELo

2021/07/28 09:01

取ってから除くのではなく、 逆に、urlを取得しないように設定できませんか?
guest

回答2

0

pyhon

1--> 29 re.sub("https?://", "", tweet_list) 2

python

1 re.sub("https?://", "", tweet) 2

に変更しましょう。

投稿2021/07/13 00:07

編集2021/08/03 22:44
ppaul

総合スコア24666

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

quickquip

2021/07/13 01:47

書式が崩れているようです
guest

0

print(type('tweet_list'))で型の確認をしたのですがstr型で問題ないように思いました

tweet_list(変数名)と'tweet_list'(文字列)の違いが理解できていないと言うことは、結構最初から復習し直しですね。

tweet_listの変数名で示されるデータは文字列じゃなくてリストです。
for tweet in tweet_list:と書いているのですから、tweet(リストの1要素)と書きましょう。

投稿2021/07/13 00:48

編集2021/07/13 02:22
otn

総合スコア84555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saiy

2021/07/25 13:22

ありがとうございます。訂正しました
otn

2021/07/25 15:27

プログラムはしっかり考えて書きましょう。 そしてその考えが合っているか確認しましょう。 enc = json.dumps(tweet_list,ensure_ascii=False) の enc は何だと思っていますか? for tweet in enc: の tweetは何だと思っていますか?
saiy

2021/07/25 21:15

encはtweet_listをストリング型にしたものだと思っています。 (エラー文でストリング型でないと出てきたため) tweetはencの配列の要素が入る関数だと思っています。 encは配列かつストリング型だと思っていたのですが、配列ではないのでしょうか? 初歩的な質問ですみません
otn

2021/07/26 11:05

> encは配列かつストリング型 そんなものはありません。 「ストリング型を要素とする配列」を意図しているなら、tweet_list がまさにそれですね。 アドバイスとしては、「#問題箇所」のコメント以降のボロボロ部分を全部消して、よく考えてゼロから書き直しましょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問