私は以下のコードを書かれている:Pythonの "Re"モジュールは特別な言語に敏感ですか?
def process_file_step(message):
chat_id = message.chat.id
search = message.text
pattern = re.compile(u'.*%s.*\.pdf' %re.escape(search), re.I)
if next(filter(pattern.search, os.listdir('Files')), False):
bot.send_chat_action(chat_id, 'typing')
bot.send_message(chat_id, 'فایل هایی که نیاز داشتید :')
for files in filter(pattern.search, os.listdir('Files')):
requested_file = open('Files/' + files, 'rb')
bot.send_chat_action(chat_id, 'upload_document')
bot.send_document(chat_id, requested_file, caption='@RavanPediaBot')
requested_file.close()
else:
bot.send_chat_action(chat_id, 'typing')
bot.send_message(chat_id, 'چنین سندی وجود ندارد !')
bot.register_next_step_handler(bot.send_message(chat_id, 'درخواست دیگری دارید ؟', reply_markup=process_request_step_markup), process_request_step)
これは、ユーザー用のファイルアップロードでは、それに似た名前のユーザーと検索から文字列を取得します。それは素晴らしいですが、それは問題がペルシャ語のために働かないということです、それは常にファイルが存在しないというメッセージを送信します。そして、私はコンピュータでスクリプトを実行するときにもペルシア語の名前のために働くが、私はcodeanywhere.comスクリプトを実行するために、動作しません。私はpyTelegramBotAPIを使用します。また、私はPython 3.xを使用します。関数のパラメータからテキストを取得します。また、私は&を使って検索文字列をエスケープしましたが、うまくいきませんでした。
Iは、ペルシャメッセージを印刷し、このエラーがトリガ:
UnicodeEncodeErrorを: 'ASCII' コーデックは位置0-3の文字をエンコードすることができない。序ない範囲で(128)
でなければなりません。検索パターンをエスケープすることから始めます: '。*%s。* \。pdf '%re.escape(search)'。以来、今では正規表現を書くことができます。 –
標準libのpathlibモジュールの新しいPathクラスを見てください。グロブマッチは非常に簡単に行うことができます: 'Path(" Files ")。glob(" * {} * .pdf ".format(search))' – PaulMcG
@WillemVanOnsemありがとうございましたが、うまくいかなかった... –