2015-10-05 9 views
5

Google Play पारिस्थितिकी तंत्र रेटिंग डेटा को बाल्टी, यानी क्लाउड स्टोरेज से एक्सेस करने की अनुमति देता है। जबकि मैं Play डेवलपर के कंसोल से सफलतापूर्वक CSV डाउनलोड कर सकता हूं और इसे संसाधित कर सकता हूं, फ़ाइल utf-16 एन्कोडिंग में है। जब मैं क्लाउड संग्रहण के माध्यम से रेटिंग्स तक पहुँचने का प्रयासGoogle Play ऐप रेटिंग डेटा को पार्स नहीं कर सकता

u'Package Name,App Version Code,Reviewer Language,Device,Review Submit Date and Time,Review Submit Millis Since Epoch,Review Last Update Date and Time,Review Last Update Millis Since' 

हालांकि,:

try: 
    stats = cloudstorage.listbucket(folder_path) 
except Exception as e: 
    raise 
files = [stat for stat in stats] 
newest = max(files, key=lambda f: f.st_ctime) 
newest_ratings_file = cloudstorage.open(newest.filename) 
s = newest_ratings_file.read() 
newest_ratings_file.close() 

, मैं के अगले अनुक्रम प्राप्त यहाँ पहले 180 बाइट्स हैं:

'255,254,80,0,97,0,99,0,107,0,97,0,103,0,101,0,32,0,78,0,97,0,109,0,101,0,44,0,65,0,112,0,112,0,32,0,86,0,101,0,114,0,115,0,105,0,111,0,110,0,32,0,67,0,111,0,100,0,101,0,44,0,82,0,101,0,118,0,105,0,101,0,119,0,101,0,114,0,32,0,76,0,97,0,110,0,103,0,117,0,97,0,103,0,101,0,44,0,68,0,101,0,118,0,105,0,99,0,101,0,44,0,82,0,101,0,118,0,105,0,101,0,119,0,32,0,83,0,117,0,98,0,109,0,105,0,116,0,32,0,68,0,97,0,116,0,101,0,32,0,97,0,110,0,100,0,32,0,84,0,105,0,109,0,101,0,44,0,82,0,101,0,118,0,105,0,101,0,119,0' 

या डीकोड बाइट (पहले 180 यहाँ):

31,139,8,0,0,0,0,0,0,0,228,189,201,147,44,219,150,222,181,75,74,53,85,42,149,132,74,133,138,82,53,231,189,42,189,71,137,155,85,209,55,247,221,115,239,203,38,154,236,251,150,65,146,125,223,247,73,47,76,48,96,0,162,4,234,104,198,48,131,17,19,16,102,96,134,193,95,112,7,175,94,25,67,13,48,195,140,25,3,224,251,126,219,35,79,158,200,136,188,55,162,210,12,51,220,210,118,100,132,135,251,246,237,238,43,214,222,107,173,111,125,235,255,249,191,103,195,102,216,14,199,122,221,15,187,225,67,152,214,187,83,189,251,34,12,133,11,253,125,8,203,250,116,21,174,195,97,56,15,103,250,60,162,255,59,236,49,175,215,59,109,223,13,247,236,243,33,76,234,232 

जो मुझे किसी भी ज्ञात एन्कोडिंग की तरह दिखता नहीं है। का उपयोग कर 'utf-8', 'UTF-16', 'utf-16-हो', 'UTF-16-le' लीड की तरह त्रुटियों डीकोड करने के लिए डिकोड करने के लिए कोशिश कर रहा है:

UnicodeDecodeError: 'utf16' codec can't decode bytes in position 170-171: illegal encoding 

CharDetect (https://pypi.python.org/pypi/chardet) didn 'टी के रूप में अच्छी तरह से मदद :(

मैं बहुत ज्यादा नहीं विचार जहां अगले बढ़ना है। दोस्तों/लड़कियों, किसी भी सुझाव है कि कैसे इस को हल करने? Muchas ग्रेसियस!

+0

बस एक विचार है, तो आप जब फ़ाइल खोलने content_type = "द्विआधारी/ओकटेट धारा" के लिए मजबूर की कोशिश की? –

+0

इस आलेख में आपको जो चाहिए वह करने के लिए एक स्क्रिप्ट है, शायद पढ़ने के लायक हो सकता है [1]। आप यूटीएफ [2] देखने के लिए इस साइट को भी आजमा सकते हैं। दस्तावेज़ कहते हैं कि यह यूटीएफ -16 होना चाहिए। [1] http://artymiak.com/how-i-analyze-my-google-play-android-app-install-stats-with-python/ [2] http://2cyr.com/decode/ – Ryan

+0

@JulianGo content_type केवल लेखन मोड के लिए निर्दिष्ट किया जा सकता है। –

उत्तर

2

आप देख सकते हैं फ़ाइल सामग्री-प्रकार और सामग्री - Cloud Storage browser या gsutil ls -L <file> का उपयोग करके एन्कोडिंग को डीकोड करने के तरीके पर कुछ सुराग प्राप्त करने के लिए।

इस मामले में (Content-Encoding: gzip Content-Type:text/csv; charset=utf-16le), फ़ाइल को डीकोड किए जाने पर अनजिप करने की आवश्यकता है।

संबंधित मुद्दे