В дальнейшем я использую translate()
, чтобы исключить пунктуацию из строки.У меня было много проблем с translate
, потому что он не работает с Unicode.Но теперь я заметил, что сценарий хорошо работает на сервере разработки, но вызывает ошибку на рабочем сервере.
Запрос отправляется расширением chrome в механизм приложений Google.Любые предложения, как я могу это исправить, чтобы тот же сценарий работал на рабочем сервере?Или есть другой способ устранения пунктуации без использования translate()
.
Журналы на рабочем сервере:
2011-10-11 06:18:10.384
get_rid_of_unicode: ajax: how to use xmlhttprequest
E 2011-10-11 06:18:10.384
expected a character buffer object
Traceback (most recent call last):
File "/base/python_runtime/python_lib/versions/1/google/appengine/ext/webapp/_webapp25.py", line 703, in __call__
handler.post(*groups)
File "/base/data/home/apps/ting-1/1.353888928453510037/ting.py", line 2073, in post
user_tag_list_case = f1.striplist(main().split(" "))
File "/base/data/home/apps/ting-1/1.353888928453510037/ting.py", line 2055, in main
title_no_punctuation = get_rid_of_unicode.translate(None, string.punctuation)
TypeError: expected a character buffer object
Тот же сценарий работает без проблем на сервере разработки:
INFO 2011-10-11 13:15:49,154 ting.py:2052] get_rid_of_unicode: how to use xmlhttprequest
INFO 2011-10-11 13:15:49,154 ting.py:2057] title_no_punctuation: how to use xmlhttprequest
Сценарий:
def main():
title_lowercase = title.lower()
title_without_possessives = remove_possessive(title_lowercase)
title_without_double_quotes = remove_double_quotes(title_without_possessives)
get_rid_of_unicode = title_without_double_quotes.encode('utf-8')
title_no_punctuation = get_rid_of_unicode.translate(None, string.punctuation)
back_to_unicode = unicode(title_no_punctuation, "utf-8")
clean_title = remove_stop_words(back_to_unicode, f1.stop_words)
return clean_title
user_tag_list = []
user_tag_list_case = f1.striplist(main().split(" "))
for tag in user_tag_list_case:
user_tag_list.append(tag.lower())