古えのPHPで作成したtwitter botがAPI2に対応して動かないので、pythonで書き直そうと思い少しテストをしてみた。
ネット上に転がっているサンプルコードだと tweepyを使って、CSV読み込みにPandasを使っている事が多い。
ちなみに、2024年1月17日現在のConoha wingのpython関連のインストール済みモジュールは以下の通り
$ pip list
Package Version
certifi 2023.5.7
charset-normalizer 2.0.12
idna 3.4
oauthlib 3.2.2
pip 20.2.4
requests 2.27.1
requests-oauthlib 1.3.1
setuptools 38.5.2.post20200320
tweepy 4.6.0
urllib3 1.26.16
pip installでなんでもインストールできるみたいなことも書いてあったけど、エラーが出て調べるのも手間だしモジュールcsvで書いても大した手間ではないのでPandas使わないで書いた。
ちなみに設定されているPythonの2つのバージョンのうち新しい方は「3.6.15」
あと少しはまったのが、以下のコマンドを先に書いておかないと標準出力がutf-8に対応していなくて日本語の入った文字列を表示すると500エラーが出ること。
import sys
import io
sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding=’utf-8′)
話を戻して、割と一杯検索結果ページに出てくる
import pandas as pd
df = pd.read_csv(filepath, header=None).values.tolist()
import csv
with open(filepath, encoding=”utf8″, newline=””) as f:
csvreader = csv.reader(f)
df = [row for row in csvreader]
Pandasを使わずにcsvやtsvファイルを開く(open関数)|ぷんたむの悟りの書
で同等の処理になる。
テスト1
テスト2
テスト3
テスト4
テスト5
テスト6
というcsvを用意して実行すると(欠片もカンマ区切りではないですが)
[['テスト1'], ['テスト2'], ['テスト3'], ['テスト4'], ['テスト5'], ['テスト6']]
というリストに読み込まれるので
tweetstring=contents[1][0]
とすると2つめの要素
テスト2
が取得できる
この書き方すごいです
contents = [row for row in csvreader]
勉強になります