判断字符串是不是合法的列表或字典
现在有大量的字符串,需要对它们作以下判断:判断字符串的内容是不是合法的列表或字典
例如
a = '' # 合法
b = '[1, 2, 3' # 不合法
c = '{123}' # 不合法
d = '{a: None}'# 合法
字符串的内容包括但不限于:
'[ 12:3 ]'
'{123}'
'a'
'123'
=======================
我的想法:
用re判断——规则太复杂
用try和json.loads判断——效率有点低
=======================
因为要处理大量字符串,所以效率需要高一点
请问各位大佬,有无好的思路? def check(c):
r = False
if '[' in c or '{' in c:
try:
x = eval(c)
if '[' in c or '{' in c and ':' in c:
r = True
except:
pass
return r
a = ['' , '' , '{ 12 : 3 }' , 'a' , '123']
for c in a:
print("'" + c + "'" + " : # 合法") if check(c) else print("'" + c + "'" + " : # 不合法")
运行实况:
D:\\Python>python a.py
'' : # 合法
'[1, 2, 3' : # 不合法
'{123}' : # 不合法
'{a : None}' : # 不合法
'' : # 不合法
'{ 12 : 3 }' : # 合法
'a' : # 不合法
'123' : # 不合法
D:\\Python> 只有正则最方便了
(可以先把空格去掉)
下面是匹配列表的代码
应该没问题(第一次写这个)
from re import search
inList = "[]"
inList = inList.replace(" ", "")
reStr = "\[(.+?,)*?.*?\]"
print(search(reStr, inList)) liuzhengyuan 发表于 2022-8-4 11:17
只有正则最方便了
(可以先把空格去掉)
下面是匹配列表的代码
好吧,我来试试 鱼cpython学习者 发表于 2022-8-4 11:38
好吧,我来试试
别那么快设最佳啊,万一还有问题呢?{:10_277:} liuzhengyuan 发表于 2022-8-4 11:39
别那么快设最佳啊,万一还有问题呢?
我刚去试了下,觉得暂时没问题了,后面有啥问题再改下re表达式吧{:10_282:} 鱼cpython学习者 发表于 2022-8-4 11:44
我刚去试了下,觉得暂时没问题了,后面有啥问题再改下re表达式吧
字典也是一样,只不过多了一个冒号插入在中间 liuzhengyuan 发表于 2022-8-4 11:45
字典也是一样,只不过多了一个冒号插入在中间
ok,感谢补充{:10_256:}
页:
[1]