Python——循環遍歷多個列表實現字符的組合拼接

                                Python——循環遍歷多個列表實現字符的組合拼接

 

目標:給定泛化的句式文件regex.txt,組合生成query

參考解決技巧一日一技:如何用Python遍歷多個列表元素的所有組合

 

regex.txt的內容:

小張(來|背|背誦|讀)+(一段|一首|幾首|一條)我喜歡的(唐詩|宋詞|元曲)吧
立馬(刪掉|關閉|退出)剛纔我打開的+(網頁|頁面|腳本)
(一杯|一瓶|一盆)+(奶茶|喜茶|奈雪的茶|一點點)+(多謝)

Python代碼:

#!/usr/bin/env python
# -*- coding:utf-8 -*-

"""
@Time     :2019/8/10
@Name     :ZhangWei
@Contact  :[email protected]
@File     :regex2list.py
@Software :Pycharm
"""

import re
import itertools


# 遍遍歷多個列表元素的所有組合
class Regex2List(object):
    def __init__(self, regex_path, regex_list):
        self.regex_path = regex_path
        self.regex_list = regex_list

    @staticmethod
    def get_list(str_list):
        res, data = [], ['']
        for line in str_list:
            if line == '':
                continue
            else:
                data = itertools.product(data, line.split('|'))
        for result in data:
            res.append(''.join(re.findall(r'[\u4e00-\u9fa5]', str(result))))
        return res

    def run(self):
        res_list = []
        with open(self.regex_path, 'r', encoding='utf-8') as file:
            for line in file:
                data = re.split("|".join(self.regex_list), line[:-1])
                for res in self.get_list(data):
                    res_list.append(res)
        return res_list


if __name__ == "__main__":
    rl = Regex2List(regex_path="regex.txt", regex_list=["\(", "\)", "\+", "\(", "\)"])
    for res in rl.run():
        print(res)

運行結果:

小張來一段我喜歡的唐詩吧
小張來一段我喜歡的宋詞吧
小張來一段我喜歡的元曲吧
小張來一首我喜歡的唐詩吧
小張來一首我喜歡的宋詞吧
小張來一首我喜歡的元曲吧
小張來幾首我喜歡的唐詩吧
小張來幾首我喜歡的宋詞吧
小張來幾首我喜歡的元曲吧
小張來一條我喜歡的唐詩吧
小張來一條我喜歡的宋詞吧
小張來一條我喜歡的元曲吧
小張背一段我喜歡的唐詩吧
小張背一段我喜歡的宋詞吧
小張背一段我喜歡的元曲吧
小張背一首我喜歡的唐詩吧
小張背一首我喜歡的宋詞吧
小張背一首我喜歡的元曲吧
小張背幾首我喜歡的唐詩吧
小張背幾首我喜歡的宋詞吧
小張背幾首我喜歡的元曲吧
小張背一條我喜歡的唐詩吧
小張背一條我喜歡的宋詞吧
小張背一條我喜歡的元曲吧
小張背誦一段我喜歡的唐詩吧
小張背誦一段我喜歡的宋詞吧
小張背誦一段我喜歡的元曲吧
小張背誦一首我喜歡的唐詩吧
小張背誦一首我喜歡的宋詞吧
小張背誦一首我喜歡的元曲吧
小張背誦幾首我喜歡的唐詩吧
小張背誦幾首我喜歡的宋詞吧
小張背誦幾首我喜歡的元曲吧
小張背誦一條我喜歡的唐詩吧
小張背誦一條我喜歡的宋詞吧
小張背誦一條我喜歡的元曲吧
小張讀一段我喜歡的唐詩吧
小張讀一段我喜歡的宋詞吧
小張讀一段我喜歡的元曲吧
小張讀一首我喜歡的唐詩吧
小張讀一首我喜歡的宋詞吧
小張讀一首我喜歡的元曲吧
小張讀幾首我喜歡的唐詩吧
小張讀幾首我喜歡的宋詞吧
小張讀幾首我喜歡的元曲吧
小張讀一條我喜歡的唐詩吧
小張讀一條我喜歡的宋詞吧
小張讀一條我喜歡的元曲吧
立馬刪掉剛纔我打開的網頁
立馬刪掉剛纔我打開的頁面
立馬刪掉剛纔我打開的腳本
立馬關閉剛纔我打開的網頁
立馬關閉剛纔我打開的頁面
立馬關閉剛纔我打開的腳本
立馬退出剛纔我打開的網頁
立馬退出剛纔我打開的頁面
立馬退出剛纔我打開的腳本
一杯奶茶多謝
一杯喜茶多謝
一杯奈雪的茶多謝
一杯一點點多謝
一瓶奶茶多謝
一瓶喜茶多謝
一瓶奈雪的茶多謝
一瓶一點點多謝
一盆奶茶多謝
一盆喜茶多謝
一盆奈雪的茶多謝
一盆一點點多謝

 

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