Перейдите к своему config.php
. У меня такая же проблема. Проверьте имя пользователя и пароль, а также sql select - это то же имя, что и config.
На Python 2 вы должны использовать литерал u''
для создания строки Unicode. Кроме того, вы должны передать флаг re.UNICODE
и преобразовать свои входные данные в Unicode (например, text = data.decode('utf-8')
):
#!/usr/bin/env python
import re
text = u'This dog \U0001f602'
print(text) # with emoji
emoji_pattern = re.compile("["
u"\U0001F600-\U0001F64F" # emoticons
u"\U0001F300-\U0001F5FF" # symbols & pictographs
u"\U0001F680-\U0001F6FF" # transport & map symbols
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
"]+", flags=re.UNICODE)
print(emoji_pattern.sub(r'', text)) # no emoji
This dog
Это работает для меня. Он мотивирован https://stackoverflow.com/a/43813727/6579239
import unicodedata
from unidecode import unidecode
def deEmojify(inputString):
returnString = ""
for character in inputString:
try:
character.encode("ascii")
returnString += character
except UnicodeEncodeError:
returnString += ''
return returnString
Полная версия Удалить emojis:
def remove_emoji(string):
emoji_pattern = re.compile("["
u"\U0001F600-\U0001F64F" # emoticons
u"\U0001F300-\U0001F5FF" # symbols & pictographs
u"\U0001F680-\U0001F6FF" # transport & map symbols
u"\U0001F1E0-\U0001F1FF" # flags (iOS)
u"\U00002702-\U000027B0"
u"\U000024C2-\U0001F251"
"]+", flags=re.UNICODE)
return emoji_pattern.sub(r'', string)
Поскольку [...]
означает любой из набора символов, а потому, что два символа в группе, разделенные тире, означают диапазон символов (часто «az» или «0-9»), ваш паттерн говорит: косой чертой, за которой следуют любые символы в группе, содержащей x, {, 1, F, 6, 0, 1, диапазон} через x, {, 1, F, 6, 4, f или} ", за которым следует косая черта и буква u ". Этот диапазон в середине - это то, что re вызывает неправильный диапазон символов.
Если вы используете пример из принятого ответа и все еще получаете ошибки «неправильного диапазона символов», вы, вероятно, используете узкую сборку ( см. этот ответ для получения более подробной информации). Переформатированная версия регулярного выражения, которая, похоже, работает:
emoji_pattern = re.compile(
u"(\ud83d[\ude00-\ude4f])|" # emoticons
u"(\ud83c[\udf00-\uffff])|" # symbols & pictographs (1 of 2)
u"(\ud83d[\u0000-\uddff])|" # symbols & pictographs (2 of 2)
u"(\ud83d[\ude80-\udeff])|" # transport & map symbols
u"(\ud83c[\udde0-\uddff])" # flags (iOS)
"+", flags=re.UNICODE)
Принятый ответ, а другие работали для меня немного, но я в конечном итоге решил снять все символы за пределами Basic Multilingual Plane . Это исключает будущие дополнения к другим планам Юникода (там, где есть и такие живые), что означает, что мне не нужно обновлять свой код каждый раз, когда добавляются новые символы Юникода:).
В Python 2.7 конвертировать в unicode если ваш текст еще нет, а затем используйте отрицательное регулярное выражение ниже (subs ничего not в регулярном выражении, это все символы из BMP , кроме для суррогатов, которые используются для создания 2 байта Дополнительные символы многоязычного языка ).
NON_BMP_RE = re.compile(u"[^\U00000000-\U0000d7ff\U0000e000-\U0000ffff]", flags=re.UNICODE)
NON_BMP_RE.sub(u'', unicode(text, 'utf-8'))
Если вы не хотите использовать регулярное выражение, лучшим решением может быть использование emoji python package .
Вот простая функция для возврата бесплатного текста emoji (благодаря этот SO ответ ):
import emoji
def give_emoji_free_text(text):
allchars = [str for str in text.decode('utf-8')]
emoji_list = [c for c in allchars if c in emoji.UNICODE_EMOJI]
clean_text = ' '.join([str for str in text.decode('utf-8').split() if not any(i in str for i in emoji_list)])
return clean_text
Если вы имеете дело со строками, содержащими emojis, это просто
>> s1 = "Hi
Пробовал все ответы, к сожалению, они не удалили новое обнимающее лицо emoji