Совместим ли Google App Engine с Python translate ()? - PullRequest
1 голос
/ 11 октября 2011

В дальнейшем я использую 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())

1 Ответ

2 голосов
/ 11 октября 2011

Google App Engine работает под управлением Python 2.5.2.str.translate() требует 256-символьную строку в качестве первого аргумента;None является допустимым значением только с Python 2.6.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...