我正在尝试找到正则表达式(s
)的排列,这也是正则表达式,这是我到目前为止所做的:
def permutations(s):
leaves = ['1', '2', '0', 'e']
possible = []
if len(s) == 3 and s[1] in leaves:
return s
elif len(s) > 3:
for i in range(len(s)):
current_character = s[i]
other_characters = s[:i] + s[i+1:]
for possible_regexes in permutations(other_characters):
if is_regex(possible_regexes):
possible = [[current_character] + [other_characters]]
return possible
for regexes in possible:
print(regexes)
但是我收到一个错误,告诉我我无法迭代字符串,我很确定这是问题所在:possible = [[current_character] + [other_characters]]
。我将如何返回它,以便我可以迭代每个排列,然后确定该排列是否有效?
编辑这是错误TypeError: 'NoneType' object is not iterable
EDIT2 完整追溯:
File "regex_functions.py", line 86, in <module>
print (all_regex_permutations('(1.2)'))
File "regex_functions.py", line 68, in all_regex_permutations
for possible_regexes in all_regex_permutations(other_characters):
File "regex_functions.py", line 68, in all_regex_permutations
for possible_regexes in all_regex_permutations(other_characters):
TypeError: 'NoneType' object is not iterable
答案 0 :(得分:2)
您发布的回溯引用了与您发布的功能不同的功能名称,但它似乎只是重命名。我会假设情况就是这样。
您应该关注的跟踪项是追溯中的最后一项。
File "regex_functions.py", line 68, in all_regex_permutations for possible_regexes in all_regex_permutations(other_characters): TypeError: 'NoneType' object is not iterable
错误表明NoneType
不可迭代。这意味着调用all_regex_permutations(other_characters)
的结果在某个时刻返回None
。您需要分析代码并弄清楚它实际返回的位置None
。
我暗示并非每个代码路径都返回一个值,这是导致此错误的最终原因(我看到其他可能的错误,但这是一个不同的问题)。您应该问自己这些问题:“此功能的所有代码路径是什么?”并且“我会为每个人返回正确的结果吗?”
我已经突出显示了该函数中的代码路径。
s
的任何内容。假设s
是列表或其他预期类型,那么这将起作用。possible
的任何内容。 possible
设置在两个不同的点,即函数顶部的初始值,以及循环体中赋值的新结果。None
。蓝色路径是问题所在。你没有在那里归还任何东西。 需要纠正。