Untitled
unknown
plain_text
a year ago
1.3 kB
6
Indexable
import re import random def parse_spintax(text, num_variations): pattern = r'\{([^{}]+)\}' matches = re.findall(pattern, text) variations = [] possible_variants = 1 for match in matches: options = match.split('|') variations.append(options) possible_variants = possible_variants * len(options) print(possible_variants) parsed_texts = set() while len(parsed_texts) < num_variations: parsed_text = text for options in variations: selected_option = random.choice(options) parsed_text = parsed_text.replace("{" + "|".join(options) + "}", selected_option, 1) if parsed_text not in parsed_texts: parsed_texts.add(parsed_text) if len(parsed_texts) == possible_variants: return parsed_texts random.shuffle(variations) return parsed_texts text_with_spintax = '''{Hello|Hi} Name ''' num_variations = 10 parsed_variations = parse_spintax(text_with_spintax, num_variations) with open('skazka.txt', 'w') as file: for i, variation in enumerate(parsed_variations, start=1): variation = re.sub(r'\{|\}', '', variation) file.write(f"{i}. {variation}\n") print("500 variations have been saved in 'skazka.txt'.")
Editor is loading...
Leave a Comment