Untitled
unknown
plain_text
2 years ago
1.3 kB
12
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