python: 转换为大写并查找字符串
我在这一行代码上遇到了问题:
row[1].upper().find('CELEBREX',1)
(这个返回的是-1
)
看起来它没有找到“CELEBREX”,尽管它确实存在。
row[1] = 'celebrex, TRAMADOL'
我是不是把字母转换成大写的方式搞错了?
3 个回答
1
你从第二个字母开始搜索,也就是字母 e:
row=("",'celebrex, TRAMADOL')
print row[1].upper().find('CELEBREX',1)
print row[1][1:]
"""Output:
-1
elebrex, TRAMADOL
"""
2
看起来upper()
这个函数没问题,但find
就不太行了。你想要在字符串的开头找东西,而不是从某个偏移位置开始。
row[1].upper().find('CELEBREX')
4
find()函数的第二个参数不应该是1
,因为这样会从字符串的第一个字符之后开始搜索。
>>> s = 'celebrex, TRAMADOL'
>>> print s.upper().find('CELEBREX')
0
find()会返回0,因为它在字符串的第一个位置0
找到了第一个匹配。所以要注意,正如你已经发现的那样,如果find()没有找到字符串,它会返回-1。而返回值0实际上是表示找到了匹配。