Python——循環遍歷替換字符串中的部分關鍵詞

                             Python——循環遍歷替換字符串中的部分關鍵詞

 

目標:循環遍歷替換字符串中的指定關鍵詞。

例子:

[時間]我想喝[城市]的[飲品店]

[時間]: ["今天", "昨天", "明天"],
[城市]: ["重慶", "成都", "北京", "深圳"],
[飲品店]: ["一點點", "奈雪的茶", "喜茶", "蜜雪冰城"]

結果:

今天我想喝重慶的一點點
今天我想喝重慶的奈雪的茶
今天我想喝重慶的喜茶
今天我想喝重慶的蜜雪冰城
今天我想喝成都的一點點
今天我想喝成都的奈雪的茶
今天我想喝成都的喜茶
今天我想喝成都的蜜雪冰城
今天我想喝北京的一點點
今天我想喝北京的奈雪的茶
今天我想喝北京的喜茶
今天我想喝北京的蜜雪冰城
今天我想喝深圳的一點點
今天我想喝深圳的奈雪的茶
今天我想喝深圳的喜茶
今天我想喝深圳的蜜雪冰城
昨天我想喝重慶的一點點
昨天我想喝重慶的奈雪的茶
昨天我想喝重慶的喜茶
昨天我想喝重慶的蜜雪冰城
昨天我想喝成都的一點點
昨天我想喝成都的奈雪的茶
昨天我想喝成都的喜茶
昨天我想喝成都的蜜雪冰城
昨天我想喝北京的一點點
昨天我想喝北京的奈雪的茶
昨天我想喝北京的喜茶
昨天我想喝北京的蜜雪冰城
昨天我想喝深圳的一點點
昨天我想喝深圳的奈雪的茶
昨天我想喝深圳的喜茶
昨天我想喝深圳的蜜雪冰城
明天我想喝重慶的一點點
明天我想喝重慶的奈雪的茶
明天我想喝重慶的喜茶
明天我想喝重慶的蜜雪冰城
明天我想喝成都的一點點
明天我想喝成都的奈雪的茶
明天我想喝成都的喜茶
明天我想喝成都的蜜雪冰城
明天我想喝北京的一點點
明天我想喝北京的奈雪的茶
明天我想喝北京的喜茶
明天我想喝北京的蜜雪冰城
明天我想喝深圳的一點點
明天我想喝深圳的奈雪的茶
明天我想喝深圳的喜茶
明天我想喝深圳的蜜雪冰城

代碼:

import re
import itertools


class Regex2List(object):
    def __init__(self, text, data_dict, regex_list):
        self.text = text
        self.data_dict = data_dict
        self.regex_list = regex_list

    def get_list(self, str_list):
        content, data = [], [""]
        for word in str_list:
            if word == "":
                continue
            elif word in list(self.data_dict.keys()):
                data = itertools.product(data, self.data_dict[word])
            else:
                data = itertools.product(data, [word])
        for tmp in data:
            content.append("".join(re.findall(r"[\w\u4e00-\u9fcc]+", str(tmp))))
        return content

    def run(self):
        res_list = []
        data = re.split("|".join(self.regex_list), self.text)
        for tmp in self.get_list(data):
            res_list.append(tmp)
        return res_list


if __name__ == "__main__":
    text = "[時間]我想喝[城市]的[飲品店]"
    data_dict = {
        "時間": ["今天", "昨天", "明天"],
        "城市": ["重慶", "成都", "北京", "深圳"],
        "飲品店": ["一點點", "奈雪的茶", "喜茶", "蜜雪冰城"]
                }
    rl = Regex2List(text, data_dict, regex_list=["\[", "\]"])
    for res in rl.run():
        print(res)

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章