我不是程序员。这是我的第一个计划。
我想:
我得到#1工作但是当我搜索字符串“2017年6月5日”时,我收到下面列出的错误。
错误消息
Traceback (most recent call last):
File "C:\Users\Family\Documents\Python Programs\webpagecopy2.py", line 8, in <module>
if "June 5, 2017" in webPageCopy:
TypeError: a bytes-like object is required, not 'str'
以下是代码:
# webpagecopy2.py
import urllib.request
webpagestring = " "
url = 'https://www.nwbio.com/press-releases/'
response = urllib.request.urlopen(url)
webPageCopy = response.read()
print(webPageCopy)
if "June 5, 2017" in webPageCopy:
print ('success')
任何建议都将受到赞赏。
答案 0 :(得分:1)
就这样做。
if b"June 5, 2017" in webPageCopy:
print ('success')
在您的示例中,您从response.read()
获取的所有数据都是字节对象,而不是字符串。您可以在python中查看对象的类型,如下所示。
print(type(webPageCopy)) # prints - <class 'bytes'>
因此,在目标字符串之前添加前缀(b
)前缀可以解决您的问题。
其他替代方案:
if bytes("June 5, 2017", 'utf8') in webPageCopy:
print ('success')
,或者
if "June 5, 2017".encode('utf8') in webPageCopy:
print ('success')
答案 1 :(得分:1)
因为"June 5, 2017"
是一个str对象,webPageCopy
是一个类似字节的对象。
您需要将webPageCopy
转换为str类型。
if "June 5, 2017" in str(webPageCopy):
或者将“2017年6月5日”定义为Wasi Ahmad所提到的字节对象。
if b"June 5, 2017" in webPageCopy:
答案 2 :(得分:0)
FROM golang:1.8
COPY . /go/src/github.com/codeblooded/test1
WORKDIR /go/src/github.com/codeblooded/test1
RUN echo $PATH
RUN go get -d -v ./...
RUN go install -v ./...
RUN go build -o test1 .
CMD ["test1"]
EXPOSE 3470
是bytes
对象,而不是字符串,因此为了使用version: '3'
services:
postgres:
image: postgres
volumes:
- ./db/data/psql:/var/lib/postgresql/data
- ./db/schema:/db/schema
redis:
image: redis
volumes:
- ./db/data/redis:/data
server:
build: .
command: test1
volumes:
- .:/go/src/github.com/codeblooded/test1
ports:
- "3470:3470"
depends_on:
- postgres
- redis
运算符,您必须提供另一个webPageCopy
(或类字节)对象。幸运的是,这在Python中非常简单 - 只需在表示文字时使用in
前缀:
bytes