我正在构建一个 SQL 查询的正则表达式,并将其传递给一个 Python 函数。这是我当前正在做的事情(iterable
是传递给函数的变量):
if isinstance(iterable, (list, tuple, set)):
app = '|'.join(iterable)
我希望能够测试一个抽象(请参阅集合模块的 ABC),这意味着它是一个容器,但不是一个basestring
。 (这是可迭代的!)
有没有办法改进上述内容?
最佳答案
我认为不存在这样的东西 - 你拥有的可能是最好的。
有时,我的函数会接受字符串(我将对其进行拆分)或可迭代的字符串。对于这些,我通常会进行阴性测试,即
if isinstance(iterable, basestring):
iterable = iterable.split(',')
等等
关于Python,测试集合/列表/元组的优雅方法,需要字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21437214/