मैं निम्नलिखित कोड:यूनिकोड तारों के साथ काम करने के लिए मैं str.translate कैसे प्राप्त करूं?
import string
def translate_non_alphanumerics(to_translate, translate_to='_'):
not_letters_or_digits = u'!"#%\'()*+,-./:;<=>[email protected][\]^_`{|}~'
translate_table = string.maketrans(not_letters_or_digits,
translate_to
*len(not_letters_or_digits))
return to_translate.translate(translate_table)
कौन सा गैर यूनिकोड स्ट्रिंग्स के लिए महान काम करता है:
>>> translate_non_alphanumerics('<foo>!')
'_foo__'
लेकिन यूनिकोड स्ट्रिंग्स के लिए विफल रहता है:
>>> translate_non_alphanumerics(u'<foo>!')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<stdin>", line 5, in translate_non_alphanumerics
TypeError: character mapping must return integer, None or unicode
मैं किसी भी नहीं कर सकते हैं str.translate() विधि के लिए Python 2.6.2 docs में "यूनिकोड ऑब्जेक्ट्स" पर अनुच्छेद की भावना।
मैं यह काम यूनिकोड तारों के लिए कैसे कर सकता हूं?
यहां एक उदाहरण है [उदाहरण के लिए 'यूनिकोड.ट्रांसलेट() 'विधि] (http://stackoverflow.com/a/11066687/4279) का उपयोग कर स्ट्रिंग से यूनिकोड विराम चिह्न को हटा देता है। – jfs
बेहतर आयात 'आयात स्ट्रिंग; वास्तविक कोड में 'not_letters_or_digits' हार्डकोडिंग के बजाय string.punctuation'। मुझे लगता है कि आप यहां स्पष्ट होना चाहते हैं। –