0

使用:

cur.execute(SQL)
response= cur.fetchall() //response is a LOB object
names = response[0][0].read()

我有以下 SQL 响应作为字符串names

'Mike':'Mike'
'John':'John'
'Mike/B':'Mike/B' 

如您所见,它已格式化。它实际上的格式如下:\\'Mike\\':\\'Mike\\'\n\\'John\\'...等等

为了检查例如Mike是否在列表中至少一次(我不在乎多少次,但至少一次)

我想要这样的东西:

l = ['Mike', 'Mike', 'John', 'John', 'Mike/B', 'Mike/B'],

所以我可以简单地遍历列表并询问

for name in l: 
   'Mike' == name: 
      do something

任何想法我怎么能做到这一点?

非常感谢

编辑:

当我做:

list = names.split()

我收到了几乎是我想要的列表,但里面的元素看起来仍然像这样!!!:

list = ['\\'Mike\\':\\'Mike\\", ...]
4

2 回答 2

1
import re
pattern = re.compile(r"[\n\\:']+")
list_of_names = pattern.split(names) 
# ['', 'Mike', 'Mike', 'John', 'John', 'Mike/B', '']
# Quick-tip: Try not to name a list with "list" as "list" is a built-in

您可以以这种方式保留结果或进行最终清理以删除空字符串

clean_list = list(filter(lambda x: x!='', list_of_names))
于 2016-03-31T13:01:22.637 回答
1
names = ['\\'Mike\\':\\'Mike\\", ...]

for name in names:
    if "Mike" in name:
        print "Mike is here"

\\' 业务是由 mysql 转义 '

如果你有一个名字列表试试这个:

my_names = ["Tom", "Dick", "Harry"]
names = ['\\'Mike\\':\\'Mike\\", ...]

for name in names:
    for my_name in my_names:
        if myname in name:
        print myname, " is here"
于 2016-03-31T13:01:33.557 回答