我正在使用RE在列表中进行搜索,但收到类型不匹配错误,我无法弄清。这是完整的代码。我检查了作为正则表达式出现的r的类型,我认为它可以与字符串一起使用,因为我发现堆栈溢出在这里出现了
import re
i = int(input())
l = []
k = []
for j in range(i):
l.append(int(input()))
for a in l:
n = int(a)
hd = 0
ld = 9
while n > 0:
rn = n % 10
if hd < rn:
hd = rn
if ld > rn:
ld = rn
n = int(n / 10)
x = hd*11 + ld*7
if x > 99:
x = x - 100
k.append(x)
cn = 0
r = re.compile("1[0-9]+")
nl = list(filter(r.search, k))
if len(nl) == 2 :
cn = cn + 1
type(r)
elif len(nl) > 2:
cn = cn + 2
我收到此错误:
Traceback (most recent call last):
File "<ipython-input-13-5ea828f5282e>", line 36, in <module>
nl = list(filter(r.search, k))
TypeError: expected string or bytes-like object
Traceback (most recent call last):
File "<ipython-input-13-5ea828f5282e>", line 36, in <module>
nl = list(filter(r.search, k))
TypeError: expected string or bytes-like object
答案 0 :(得分:0)
就像错误消息所示,您的列表不包含字符串。您可以使用str(number)
将数字转换为字符串,然后对结果进行正则表达式匹配,但是在这种情况下,更简单有效的过滤器是过滤掉10以下的数字。(我想这也可以您完全放弃对re
的依赖。)