googletrans python api - No JSON object could be decoded error
Asked Answered
L

1

6

In a file there are consisting of sentences having both hindi and english words . And I am trying to convert the the words in hindi to english , ultimately making every words to english. So for this conversion I am using googletrans api of python.Here are sentences of the file:

शराबी  
politicians have to do the work that is not necessary .
Let me tell you about a child
This percentage is more than Hindus in India.
- John कॉलिन्स
We don't want to say that they're not ध्यान
%{APPNAME} wants to send लेकिन but you need to be signed in in Chrome.
Important Size
User authentication required for VPN connection '%s'...
सतल Width
Reset
2.जीवाणुओं होना। by होना।
Suhasi Goradia Dhami
The last part of these Vedas is called कहलाता
युगधर्म
The Governor of Kashmir was arrested by this enterprise , but his 
voice was given to his voice .
It is the condition of people before you.
In fact, not the गाजा गाजा गाजा has to start the मिस्र
When there are two men , they are , then , the past , and the future  
becomes a sense of mind , and , then , , in the future , everything is 
written in the past .
And what we do is that they are wrong
In recent decades there is a lot of electricity and its differences in 
the दशकों of ग्लोबल दशकों and its extreme effect is पड़ने
It may be that you want you to support a special school , a special 
school , or a free school , or a free school .
Display Mapping
Please ensure that you use the correct form .
There are two people here . ”
vivacity
Manu Bhandari
Category : Religious Book
This period is ओतप्रोत by भक्ति
“ It ' s right . ”
So there are justice
The e-mail applications will be added to the same day .
Allow login if all write permissions on user's home directory
डाउनलोड(&D)
Great Britain at the 2008 Summer Olympics
The first two were tried to मुकदमा the case of the two मुखबिरों .
The people of the higher number and the people of the higher row of         
the higher and higher class has to be told that the new education of 
the new education has to be laid down .
In recent Nepal the Government service is present by the Government 
service and modern चिकीत्सा
It is 5 years old, it can be dissolved before it
Under the Sessions Court , the court had a right to decide for Rs 200 
.
displacements and economic damage and economic damage are due to the 
evidence of the growing population of the population of population , 
though the जनसँख्या area may be less frequently due to the जनसँख्या of शीतोष्ण 
.
लाडड़ी is a popular woman .
Even in the water of water , the 0.001 सल्फाइड of hydrogen सल्फाइड in the 
water is भी .
Islam is the second religion of Islam on the basis of अनुयाइयों धर्म the  
second religion of दुनिया
This changed slowly
As a result of the genetic disease of one , the genetic disease of all 
these diseases in the same disease is the rules of the नियम of the संतानों  
.
He felt like a long dream , and his hands लगा with his hands .
Later , the financial institutions are फिलहाल -LRB- Last 50 per cent -
RRB- and the common people of the common people .
गवाक्षन बैठ
Aurangzeb

And here is my code:

#!/usr/bin/python
# -*- coding: utf-8 -*-

import googletrans
import codecs
import supportedLang

gs = googletrans.Translator()

fr =  codecs.open("11th.txt","r").readlines()

fw = open("translatedOpenNMT.txt","w")

count = 1
for i in fr :
     print count
     count  = count+1
     i = i.strip()
     lst = i.split(' ')
     k = list()
     string = str()
     for j in lst:
          lang_lst = gs.detect(j)
          lng = lang_lst.lang
          if lng == 'hi':
          word_lst = gs.translate(j)
          word = str(word_lst.text) 
          else:
             word = str(j) 
          k.append(word)
     string = ''.join(str(x)+' ' for x in k)
     fw.write(string+'\n')

And when it encounter this following line :

  Later , the financial institutions are फिलहाल -LRB- Last 50 per cent 
  -RRB- and the common people of the common people .

It displays following error:

   Traceback (most recent call last):
   File "cgtrans.py", line 23, in <module>
   lang_lst = gs.detect(j)
   File "/usr/local/lib/python2.7/dist-
        packages/googletrans/client.py", line 207, in detect
   data = self._translate(text, dest='en', src='auto')
   File "/usr/local/lib/python2.7/dist-
        packages/googletrans/client.py", line 63, in _translate
   data = utils.format_json(r.text)
   File "/usr/local/lib/python2.7/dist-packages/googletrans/utils.py", 
   line 51, in format_json
   converted = json.loads(text)
   File "/usr/lib/python2.7/json/__init__.py", line 339, in loads
   return _default_decoder.decode(s)
   File "/usr/lib/python2.7/json/decoder.py", line 364, in decode
   obj, end = self.raw_decode(s, idx=_w(s, 0).end())
   File "/usr/lib/python2.7/json/decoder.py", line 382, in raw_decode
   raise ValueError("No JSON object could be decoded")
   ValueError: No JSON object could be decoded

So how to resolve this issue?

Liechtenstein answered 12/9, 2017 at 12:25 Comment(4)
Have you tried specifying an encoding to codecs.open? e.g. maybe 'utf-8'?Vasiliu
@Vasiliu yes I have tried it already without much success.Liechtenstein
I have having this same issue. I will let you know if I find a solution.Vulcanology
I have encountered the same problem. I followed the errors and it seems the library is converting the data to json and then attempts to decode it before translating it. I searched manually my data and I found smilies. When I removed them manually I did not get the error anymore. So something in your data fails to be decoded after being converted to json.Cloison
E
1

Probably you might be converting the returned -Detected(lang=hmn, confidence=0.17513999) string to JSON format which is actually giving the errors. Avoid doing so as I have checked everything is working fine.

Simply write-

st = googletrans.Translator().detect('-LRB-') print( st.lang)

Output- u'hmn' and it is giving no errors.

Ess answered 12/9, 2017 at 13:30 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.