从列表中查找第一个匹配的字符串时出现TypeError

时间:2018-04-12 18:49:33

标签: python python-3.x

我正在尝试从下面的列表中获取URL,我做错了什么?

>>> op
[b'key', b'Changes:', b'remote:', b'https://server-1.com/253', b'test', b'change', b'remote:', b'To', b'ssh://server-1:29418/a/ab', b'*', b'[new', b'branch]', b'HEAD', b'->', b'refs/for/foo']
>>>
>>> next(x for x in op if "https" in x)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 1, in <genexpr>
TypeError: a bytes-like object is required, not 'str'
>>> 

2 个答案:

答案 0 :(得分:4)

这意味着所有数据都以字节对象的形式返回,而不是str。

使用b'some_pattern'代替'some_pattern'

答案 1 :(得分:0)

此列表是一个字节列表。 使用方法:

next(x for x in op if 'http' in str(x))