Python 对未给出预期行为的字符串进行条件检查

Python 对未给出预期行为的字符串进行条件检查,python,database,python-3.x,sqlite,Python,Database,Python 3.x,Sqlite,我有一个SQLite数据库,我正在使用Python从中读取数据。我连接到数据库,然后将整个注释列存储到一个名为output的列表中。列表中的每个条目都是一个字符串,我想隔离列表中只包含字符串“[deleted]”的条目 为此,我使用一个循环索引到列表中,然后针对每个点,我将索引I处的字符串与字符串“[deleted]”进行比较,如果字符串为“[deleted]”,则应在称为deleted flag的零向量中的索引I处设置相应的值1。我使用的代码如下: deletedFlag = np.zeros

我有一个SQLite数据库,我正在使用Python从中读取数据。我连接到数据库,然后将整个注释列存储到一个名为output的列表中。列表中的每个条目都是一个字符串,我想隔离列表中只包含字符串“[deleted]”的条目

为此,我使用一个循环索引到列表中,然后针对每个点,我将索引I处的字符串与字符串“[deleted]”进行比较,如果字符串为“[deleted]”,则应在称为deleted flag的零向量中的索引I处设置相应的值1。我使用的代码如下:

deletedFlag = np.zeros((len(output),1))
for i in range(0,len(output)):
        if (output[i] == "[deleted]"):
            deletedFlag[i] = 1
问题是输出[i]='[deleted]'从未返回true,因此从未设置相应的deletedFlag[i]=1

进一步调查并将输出[i]打印到控制台,以获取包含“[deleted]”字符串的i值,返回的字符串与我预期的略有不同:

>> print(output[3])
>> ('[deleted]',)
但是,即使我将字符串比较更改为与打印值相同,我仍然会得到deletedFlag向量的相同行为,该向量保持为全零:

deletedFlag = np.zeros((len(output),1))
for i in range(0,len(output)):
        if (output[i] == "('[deleted]',)"):
            deletedFlag[i] = 1
使用DB Browser查看前四个数据库条目时,显示了以下截图,这是我试图识别的注释列的第4行:


我想我只是把字符串比较搞错了,但就我的一生而言,我不知道它应该是什么,我尝试了我能想到的大多数括号和倒逗号的排列。我知道这可能是一个非常基本的问题,但任何帮助都将不胜感激

嗯。。。打印的
输出[3]
有点像一个半填充的元组。因此,您可能需要检查
输出[i][0]

另外,我建议使用_contains进行字符串比较,您不需要编写
range(0,n)
:默认情况下,它从零开始,因此简单的
range(n)
执行完全相同的操作;>

deletedFlag = np.zeros((len(output),1))
for i in range(len(output)):
    if output[i][0].__contains("deleted"):
        deletedFlag[i] = 1

再次检查返回值。它实际上是一根绳子吗?它也可以是一个元组,第一个元素是
'[deleted]'
。适用于这里。在您发布MCVE代码并准确描述问题之前,我们无法有效地帮助您。我们应该能够将您发布的代码粘贴到文本文件中,并重现您描述的问题。谢谢,是的,您是对的,它是tuple。我将用一个工作示例和解决方案更新这个问题,以便更容易理解谢谢,是的,问题是它是元组,通过使用输出[I][0],这就正确了。谢谢你的其他建议!