Python:REGEX在一个地方工作,但不能在另一个地方工作

时间:2013-10-12 01:36:25

标签: python regex

我将在前言中提到我不是Python编码器,我只是一起攻击这个以便快速检查我的Android应用程序的数据库。那我想把它变成我网页的脚本。除此之外,我无法弄清楚为什么for-statement之外的代码在内部不起作用。看起来行和行2是相同的。它在第一个中拉出“初学者”表名,但不会在循环中。谢谢您的帮助。

row = "(u'beginner',)"
print row
temp = re.search('\(u\'(.*)\',\)', row).group(1)
print temp

#getRows is a cursor fetch on a sqlite DB if that matters        
for row2 in getRows:
    print row2
    temp = re.search('\(u\'(.*)\',\)', row2).group(1)
    print temp 

输出:

Finding files... done.
Importing test modules ... 
(u'beginner',)
beginner
(u'beginner',)
done.

在0.000秒内进行0次测试

1 个答案:

答案 0 :(得分:2)

我知道它为什么不起作用:因为虽然row和row2的字符串表示是相同的,但它们实际上并不完全相同。尝试打印type(row2),你会发现它是一个元组。我知道这是因为DB API会返回一个元组,而不是一个看起来像元组的字符串。

所以当你有这个:

row = "(u'beginner',)"

这是一个看起来像元组的字符串,你可以重新搜索它。但是你不应该这样做 - 在数据库行中,你应该只通过row2[0]得到字符串内容,而不是使用re。