嘿,我需要創建簡單的python隨機數發生器。例如輸入:python隨機數發生器 - 在雙層嵌套級別的大括號中獲得隨機文本
{{hey|hello|hi}|{privet|zdravstvuy|kak dela}|{bonjour|salut}}, can {you|u} give me advice?
和輸出應該是:
hello, can you give me advice
我有一個腳本,它可以做到這一點,但只有一層嵌套
with open('text.txt', 'r') as text:
matches = re.findall('([^{}]+)', text.read())
words = []
for match in matches:
parts = match.split('|')
if parts[0]:
words.append(parts[random.randint(0, len(parts)-1)])
message = ''.join(words)
這是不夠的,我)
對我而言,似乎你的輸入遵循的語法對於簡單的正則表達式有點複雜。我會說,構建一個適當的詞法分析器,由分析器調用以產生輸出。如果你不熟悉這個概念,我建議你先閱讀理論:) – 2015-01-21 11:28:34
你正在尋找遞歸正則表達式匹配。見:http://stackoverflow.com/questions/1656859/how-can-a-recursive-regexp-be-implemented-in-python – 2015-01-21 11:29:30
@ KarelKubat哦,不,我不需要這個。我只想從大括號中得到隨機文本,其中包含另一個大括號 – 2015-01-21 11:29:57