86661


やりたいこと：  
Pythonでテキストを読み込み、  
リストから特定文字が含まれていたらその文字を抽出したいです。  
ただリストをスライスする際に**TypeError: 'bool'**エラーが発生します。

**エラー内容**

[code]

    Traceback (most recent call last):
      File "c:\Users\test\Documents\test\textread.py", line 35, in <module>
        s=New_list[20:35]
    TypeError: 'bool' object is not subscriptable
    
[/code]

もし、このエラーの回避方法分かる方がいましたら、ご教授をお願い致します。  
また別の方法で抽出できるのであれば、教えていただけると幸いです。

テキストファイル

[code]

    フォロワー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キーで投稿します
    
[/code]

毎回テキストデータが変化しますので、  
下記の文字が含んでいたら抽出したいです。

[code]

    #特定文字がNew_listに含まれているかを調べる
    New_list = "#python" in New_list and "Python簡単" in New_list and "#programin" in New_list
    
[/code]

**実現したいテキスト出力**

[code]

    2022年3月1日
    テスト 投稿
    TEST
    #python
    #code
    #programin
    プログラミング
    簡単
    コーディング
    Python簡単
    pythonできること
    Enterキーで投稿します
    
[/code]

下記のcodeで試してみましたが、  
「#特定文字がNew_listに含まれているかを調べる」ところにand条件を入れたあとには  
**TypeError: 'bool'**エラーが発生します。

手前にリストスライス情報を入れるとエラーが発生しません。

[code]

    #スライスして投稿情報取得
    s=New_list[20:35]
    
[/code]

全体コード

[code]

    import locale
    
    #ファイルパステキスト
    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に含まれているかを調べる
    New_list = "#python" in New_list and "Python簡単" in New_list and "#programin" in New_list
    print(New_list) 
    
    if True == New_list :
       print("上記の#pythonなどの投稿情報取得")
       
       #スライスして投稿情報取得
       s=New_list[20:35]
       print(s)
       
    else:
       print("何もしない") 
    
[/code]


CC BY-SA 4.0
2022-03-03T01:26:54.097
86660
2022-03-03T01:50:16.470
18859
question
python python3
PythonテキストリストTypeError: 'bool'に関して


下記の代入文でNew_listがlist型からbool型に書き変わってしまっています。  
これは右辺が条件式(評価結果がTrueまたはFalse)となっているからです。

>
[code]

>     #特定文字がNew_listに含まれているかを調べる
>     New_list = "#python" in New_list and "Python簡単" in New_list and
> "#programin" in New_list
>  
[/code]

解決策としてはNew_listとは別に`is_include`を用意すれば良いです。

[code]

    is_include = "#python" in New_list and "Python簡単" in New_list and "#programin" in New_list
    
    if is_include:
       print("上記の#pythonなどの投稿情報取得")
       
       #スライスして投稿情報取得
       s=New_list[20:35]
       print(s)
       
    else:
       print("何もしない") 
    
[/code]


CC BY-SA 4.0
2022-03-03T01:50:16.470
86661
2022-03-03T01:50:16.470
51317
86660
answer