我无法理解什么.join(map(re.escape,example))
我尝试阅读文档和示例代码,但无济于事
operators = ['+', '-', '*', '/', '**']
print ('|'.join(map(re.escape, sorted(operators, reverse=True)))
# output will be \/|\-|\+|\*\*|\*
所以我不确定我的理解是否正确,但是我认为这行代码是在做
1)特殊字符数组将以相反的顺序排序
2)使用map函数将数组中的元素映射到转义函数,这样我就可以按原样打印出特殊字符
3)我加入,然后使用“ |”
但是输出与我的理解告诉我的非常不同。如果有人可以向我解释输出的结果,那将是很棒的吗?非常感谢。
答案 0 :(得分:-1)
正如{em> Ry-所评论的,reverse=True
中没有什么奇怪的。
它唯一带来的变化是排序是降序
订购。比较两个变体:
sorted(operators)
产生['*', '**', '+', '-', '/']
(正常(升序)排序),sorted(operators, reverse=True)
产生['/', '-', '+', '**', '*']
(降序)。然后map(re.escape, ...)
将re.escape
应用于列表的每个元素。
碰巧每个元素中的每个字符都是一个特殊的正则表达式字符,所以它们每个都是
加上反斜杠,因此结果为:['\/', '\-', '\+', '\*\*', '\*']
。
然后join
(顾名思义)将这些字符串连接起来,并在它们之间插入|
。
所以结果与您写的一样(输出将是... )。
其他说明:
我看到您在这里用创建了一个正则表达式模式 备择方案。因此,至少在这种情况下,替代的顺序 不重要,您可以省略 reverse = True 。
您的评论是预期结果应为*\*\ | / | * | - | +
表示您都不知道哪些字符是特殊的正则表达式字符
re.escape
的工作方式。
在网上搜索有关正则表达式的说明并阅读它们。