I have added below to the first line of the function and managed to
ignore the space and solve it. Thank you for the hint!

some_text=urllib.parse.quote_plus(some_text)


On Tue, Feb 13, 2018 at 5:00 PM,  <tutor-requ...@python.org> wrote:
> Send Tutor mailing list submissions to
>         tutor@python.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>         https://mail.python.org/mailman/listinfo/tutor
> or, via email, send a message with subject or body 'help' to
>         tutor-requ...@python.org
>
> You can reach the person managing the list at
>         tutor-ow...@python.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of Tutor digest..."
>
> Today's Topics:
>
>    1. Re: [Help] urllib.error.HTTPError: HTTP Error 400: Bad
>       Request (Peter Otten)
>
>
> ---------- Forwarded message ----------
> From: Peter Otten <__pete...@web.de>
> To: tutor@python.org
> Cc:
> Bcc:
> Date: Tue, 13 Feb 2018 14:47:56 +0100
> Subject: Re: [Tutor] [Help] urllib.error.HTTPError: HTTP Error 400: Bad 
> Request
> cm wrote:
>
>> Dear tutors,
>>
>> I have written below function to open the profanity check url and then
>> to check for profanity in some text. When I go to the url
>> http://www.wdylike.appspot.com/?q= and type in the same text, it works
>> fine.
>>
>> I am using Microsoft OS X and Python 3.5.2 Interpreter with Pycharm
>> Community Edition.
>>
>> ---
>> import urllib.request
>>
>> def check_profanity(some_text):
>>     # check text for a curse word
>>     connection =
>> urllib.request.urlopen("http://www.wdylike.appspot.com/?q="+some_text)
>>     output = connection.read()
>>     print(output)
>>     connection.close()
>>
>> check_profanity(some_text="I gave it a good shot")
>> ---
>>
>> Error message:
>> Traceback (most recent call last):
>>   File
>>   "C:/Users/Administrator/PycharmProjects/Udacity/profanity_check.py",
>> line 29, in <module>
>>     check_profanity(some_text="I gave it a good shot")
>>   File
>>   "C:/Users/Administrator/PycharmProjects/Udacity/profanity_check.py",
>> line 15, in check_profanity
>>     connection =
>> urllib.request.urlopen("http://www.wdylike.appspot.com/?q="+some_text)
>>   File "C:\Program Files\Anaconda3\lib\urllib\request.py", line 163, in
>>   urlopen
>>     return opener.open(url, data, timeout)
>>   File "C:\Program Files\Anaconda3\lib\urllib\request.py", line 472, in
>>   open
>>     response = meth(req, response)
>>   File "C:\Program Files\Anaconda3\lib\urllib\request.py", line 582,
>> in http_response
>>     'http', request, response, code, msg, hdrs)
>>   File "C:\Program Files\Anaconda3\lib\urllib\request.py", line 510, in
>>   error
>>     return self._call_chain(*args)
>>   File "C:\Program Files\Anaconda3\lib\urllib\request.py", line 444,
>> in _call_chain
>>     result = func(*args)
>>   File "C:\Program Files\Anaconda3\lib\urllib\request.py", line 590,
>> in http_error_default
>>     raise HTTPError(req.full_url, code, msg, hdrs, fp)
>> urllib.error.HTTPError: HTTP Error 400: Bad Request
>>
>> Process finished with exit code 1
>>
>> ---
>> However when I run the code it just says Bad Request. I tried to read
>> into the traceback message but it refers not only to my file but the
>> urllib function itself too and I can't understand.
>
> Spaces aren't allowed in the url:
>
>>>> c = rq.urlopen("http://www.wdylike.appspot.com/?q=nice try")
> [...]
> urllib.error.HTTPError: HTTP Error 400: Bad Request
>
> Once you escape the ' ':
>
>>>> c = rq.urlopen("http://www.wdylike.appspot.com/?q=nice+try";)
>>>> c.read()
> b'false'
>
> Have a look at the first example at
>
> https://docs.python.org/dev/library/urllib.request.html#urllib-examples
>
> for a more general solution.
>
>
>
> _______________________________________________
> Tutor maillist  -  Tutor@python.org
> https://mail.python.org/mailman/listinfo/tutor
>
_______________________________________________
Tutor maillist  -  Tutor@python.org
To unsubscribe or change subscription options:
https://mail.python.org/mailman/listinfo/tutor

Reply via email to