71424


スクレイピングしたデータの前処理を行いたいのですがわからないことがあります。

以下のリスト:

[code]

    myList = ["...", "n回場所N日目", "..."]
    
[/code]

**n回** と **N日目** の間にある、” **場所** ”だけを取り出したいですが、  
ここから **n回** 、および **N日目** を削除するにどうすればいいのでしょうか?

n回の **n** 、N日目の **N** にはそれぞれ **1から12までの数字** が入ります。  
そのため、1桁であったり2桁になったりするので、自分にはどうすればいいのかわかりません。

以下の結果を得たいと思います。

[code]

    myList = ["...", "場所", "..."]
    
[/code]

また、これら2つの単語に挟まれた” **場所** ”も変数で、漢字で地名を表す「札幌、仙台、東京、名古屋、大阪、博多」計6個のうちいずれかが1つ入ります。

具体的には

[code]

    myList = ["...", "東京", "..."]
    
[/code]

等

お知恵をお貸しください、よろしくお願いいたします。

## 追記

[code]

    myList = ['オレンジ', '3回仙台10日目', 'orange', '1234','12回大阪1日目'] 
    
[/code]

また、このように規則的ではない文字列の場合はどのように書くのがいいのでしょうか。以下のような結果を得たいです。

[code]

    myList = ['オレンジ', '仙台', 'orange', '1234','大阪'] 
    
[/code]


CC BY-SA 4.0
2020-10-22T09:45:52.843
71423
2020-10-22T11:45:03.927
2020-10-22T11:45:03.927
3060
42436
question
python
Python で文字列から特定の単語を削除したい


正規表現で`場所`を抽出する方法はいかがでしょうか。

[code]

    import re
    
    myList = ['オレンジ', '3回仙台10日目', 'orange', '1234','12回大阪1日目'] 
    
    pattern = re.compile(r'\d{1,2}回(札幌|仙台|東京|名古屋|大阪|博多)\d{1,2}日目')
    for i in range(len(myList)):
        m = pattern.match(myList[i])
        if m:
            myList[i] = m.group(1)
    
    print(myList)
    # ['オレンジ', '仙台', 'orange', '1234', '大阪']
    
[/code]


CC BY-SA 4.0
2020-10-22T10:11:13.083
71424
2020-10-22T10:58:32.217
2020-10-22T10:58:32.217
9820
9820
71423
answer