那些似乎是regular expressions。正則表達式可以讓您以相當強大和複雜的方式在字符串中搜索模式。但他們可能有點神祕。這些似乎是某種原始聊天機器人的基礎。
>>> import re
>>> regex, phrases = (r'why (.*) i (.*)\?',
... ("You %s %s?",
... "Perhaps you only think you %s %s"))
>>> phrase1, phrase2 = phrases
>>> groups = re.search(regex, 'why am i dumb?')
>>> phrase1 % (groups.group(1), groups.group(2))
'You am dumb?'
>>> phrase2 % (groups.group(1), groups.group(2))
'Perhaps you only think you am dumb'
啊,也許你特別想知道r'blahblah'
是什麼意思。好吧,正如其他人所解釋的那樣,r
只是使其成爲一個原始字符串 - Python不會對其進行某些類型的處理,這使得RE更易於閱讀。
這裏的東西更接近我認爲這些字符串的原意。他們似乎沒有使用標準的Python組替換語法,所以我假設他們必須使用一個自定義替換函數 - 可能有一個足夠複雜的句柄來轉換動詞形式!你可以看到基本想法here。
>>> import re
>>> regex, phrases = (r'why (.*) i (.*)\?',
... (r'You \g<1> \g<2>?',
... r'Perhaps you only think you \g<1> \g<2>.'))
>>> phrase1, phrase2 = phrases
>>> re.sub(regex, phrase1, 'why am i dumb?')
'You am dumb?'
>>> re.sub(regex, phrase2, 'why am i dumb?')
'Perhaps you only think you am dumb.'
如何合理的主題? –
@Blackmoon對不起,我現在有點累,很沮喪。 下次我肯定會更清楚:) – xBlink