2014-06-17 4 views
17

मैं स्टैक ओवरफ़्लो से प्रश्न पुनर्प्राप्त करने के लिए प्रोग्राम पर काम कर रहा हूं। कल तक कार्यक्रम ठीक काम कर रहा था, लेकिन आज के बाद से मैं त्रुटिUnicodeEncodeError: 'ascii' कोडेक स्थिति 34 में वर्ण n201c 'एन्कोड नहीं कर सकता है: क्रमशः श्रेणी में नहीं (128)

"Message File Name Line Position  
Traceback    
<module> C:\Users\DPT\Desktop\questions.py 13  
UnicodeEncodeError: 'ascii' codec can't encode character u'\u201c' in position 34: ordinal not in range(128)" 

वर्तमान में प्रश्न प्रदर्शित किए जाते हैं हो रही है लेकिन मैं एक नया पाठ फ़ाइल में उत्पादन की प्रतिलिपि नहीं बना होने लगते हैं।

import sys 
sys.path.append('.') 
import stackexchange 
so = stackexchange.Site(stackexchange.StackOverflow) 
term= raw_input("Enter the keyword for Stack Exchange") 
print 'Searching for %s...' % term, 
sys.stdout.flush() 
qs = so.search(intitle=term) 
print '\r--- questions with "%s" in title ---' % (term) 
for q in qs: 
    print '%8d %s' % (q.id, q.title) 
    with open('E:\questi.txt', 'a+') as question: 
    question.write(q.title) 

time.sleep(10) 
with open('E:\questi.txt') as intxt: 
    data = intxt.read() 

regular = re.findall('[aA-zZ]+', data) 
print(regular) 

tokens = set(regular) 

with open('D:\Dictionary.txt', 'r') as keywords: 
    keyset = set(keywords.read().split()) 


with open('D:\Questionmatches.txt', 'w') as matches: 
    for word in keyset: 
    if word in tokens: 
     matches.write(word + '\n') 
+0

कौन सा लाइन इस त्रुटि उत्पन्न कर रहा है के साथ फिक्स्ड का उपयोग कर? इसके अलावा, रेगेक्स '[एए-जेडजेड] + 'ऐसा नहीं करेगा जो आपको लगता है कि यह करता है। आपको '[ए-ज़ा-जेड] +' या '(? I) [ए-जेड] +' की आवश्यकता है। –

+0

question.write (q.title) त्रुटि उत्पन्न कर रहा है। –

+0

मैं केवल शब्दों को निकालने और संख्याओं और विशेष वर्णों को अनदेखा करने के लिए ** [एए-जेडजेड] + ** का उपयोग कर रहा हूं। –

उत्तर

38

q.title एक यूनिकोड स्ट्रिंग है। फ़ाइल को लिखते समय, आपको इसे पहले एन्कोड करने की आवश्यकता होती है, अधिमानतः पूरी तरह से यूनिकोड-सक्षम एन्कोडिंग जैसे UTF-8 (यदि आप नहीं करते हैं, तो पाइथन ASCII कोडेक का उपयोग करने के लिए डिफ़ॉल्ट होगा जो 127 से ऊपर किसी भी वर्ण कोडपॉइंट का समर्थन नहीं करता है) ।

question.write(q.title.encode("utf-8")) 

समस्या को ठीक करना चाहिए।

वैसे, कार्यक्रम चरित्र (U+201C) पर चढ़ गया।

0

मैं इस में भाग के रूप में अच्छी तरह से Transifex एपीआई

response['source_string']

UnicodeEncodeError: 'ascii' codec can't encode character u'\u2019' in position 3: ordinal not in range(128)

response['source_string'].encode("utf-8")

import requests 

username = "api" 
password = "PASSWORD" 

AUTH = (username, password) 

url = 'https://www.transifex.com/api/2/project/project-site/resource/name-of-resource/translation/en/strings/?details' 

response = requests.get(url, auth=AUTH).json() 

print response['key'], response['context'] 
print response['source_string'].encode("utf-8") 
संबंधित मुद्दे

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