やりたいこと:
Pythonでテキストを読み込み、
リストから特定文字が含まれていたらその文字を抽出したいです。
リストのデータ毎回変化するので、正規表現で抽出したいです。
正規表現で行うとTypeError: expected stringのエラーが発生します。
リストをスライスする際に特にエラーしません。
リストにてスライスを使わずに正規表現で抽出する方法可能でしょうか。
もしくは別の方法でやり易い方法ありますでしょうか。
もし分かる方がいましたら、教えていただけると幸いです。
エラー内容
Traceback (most recent call last): File "c:\Users\test\Documents\test\textread.py", line 45, in <module> m = re.match(r'([2022年3月1日]+)@([#python]+)@([Python簡単]+)@([#programin]+)\.Enterキーで投稿します', s) File "C:\Program Files\Python39\lib\re.py", line 191, in match return _compile(pattern, flags).match(string) TypeError: expected string or bytes-like object
実現したい内容
スライスした時と同じように抽出したいですが、
スライス使わずに下記のように出力可能でしょうか。
#スライスして投稿情報取得 s=New_list[20:35] print(s) 実現したい出力結果 ['2022年3月1日', '', 'テスト投稿', '', 'TEST', '#python', '#code', '#programin', 'プログラミング', '簡単', 'コーディング', 'Python簡単', 'pythonできること', '', 'Enterキーで投 稿します']
テキストファイル
フォロワー11 コメント5件 Enterキーで投稿します 2022年2月27日 · おはよう! #元気 2022年2月28日 · 本日良い天気 #晴 コメント2件 Enterキーで投稿します 2022年3月1日 · テスト 投稿 TEST #python #code #programin プログラミング 簡単 コーディング Python簡単 pythonできること Enterキーで投稿します 2022年3月2日 · こんにちわ! Enterキーで投稿します 2022年3月3日 · おはようございます! Enterキーで投稿します
全体コード
import locale import re #ファイルパステキスト path = r"C:\Users\test\Desktop\test.txt" #ファイル読み込む with open(path, "r", encoding="utf-8") as f: mylist = f.readlines() print(mylist) #新しいリスト作成して特定の文字を置換 New_list = [] for x in mylist: New_list.append(x.replace("\n", "",).replace(' ', '').replace('·', '').replace('\ufeff', '')) print(str(New_list)) #リスト長さの結果 # l=len(New_list) # print(l) # 39結果 #特定文字がNew_listに含まれているかを調べる # str_match = [s for s in New_list if "Enterキーで投稿します" in s] # print(str_match) #スライスして投稿情報取得 s=New_list[20:35] print(s) #特定文字がNew_listに含まれているかを調べる is_include = "#python" in New_list and "Python簡単" in New_list and "#programin" in New_list print(is_include) if is_include: print("上記の#pythonなどの投稿情報取得") #スライスして投稿情報取得 s=New_list[20:35] print(s) #正規表現で抽出 m = re.match(r'([2022年3月1日]+)@([#python]+)@([Python簡単]+)@([#programin]+)\.Enterキーで投稿します', New_list) print(m) else: print("何もしない")
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2022/03/03 04:10
2022/03/03 04:13
2022/03/03 04:46
2022/03/03 06:20
2022/03/03 07:14
2022/03/03 07:20
2022/03/03 07:33