У меня нет такого большого опыта программирования на python, поэтому мой вопрос может быть очень простым. Я работаю над проектом для школы, где нам нужно создать выход из пользовательского ввода (мы хотим эмулировать Eliza, но очень простым способом). Прямо сейчас, единственное, что делает программа, - это поиск ключевых слов и соответствующее реагирование. Однако, поскольку я еду в французскую школу, и все на французском, мне нужно использовать акценты (например, é, è, à, á). И здесь проблема приходит: я не могу использовать акценты в моем предопределенного списка ключевых слов (так что это не ключевые слова из пользовательского ввода, но в моей собственной программе: /)Как иметь акценты в моей программе (например, é, è, à, á) - Python
Здесь у вас есть целая программа:
#Greeting from bot
print("Salut!")
(Вот предопределенное ключевое слово мы используем, чтобы знать, если есть отрицание, и если есть какие-либо унизительные эпитеты в предложении пользователя - мы должны сделать намного больше для того, чтобы сделать наш бот более по-человечески, но это просто принцип)
negation = ("ne", "n'", "pas", "guere", "ne", "plus", "jamais")
AnD = ("artificiel", "cree", "mecanique", "invente", "concu", "construit", "programme", "innove", "fabrique")
Но вот в чем проблема: для запуска нашей программы нам пришлось удалить все акценты. Так слова, как guère, Cree, MECANIQUE, inventé, programmé стать guere, Cree, MECANIQUE, invente, программа, а в некоторых случаях изменяет значение слова (например, программа становится существительное вместо прилагательного)
adj_neg_decl = None
nega = None
#FONCTION: phrase declarative, pas de negations, adjectif pejoratif
def decl_non_neg_adj_neg(statement):
if (statement.endswith('.')) and (nega == False) and (adj_neg_decl == True):
print(AnD_ici + '? Mais moi je suis humain. Ca se voit pas?')
else:
#Only for testing
print('tralalalala')
while True:
statement = raw_input("> ").lower()
if statement == "au revoir":
print("Au revoir!")
break
(Здесь мы просто ищем отрицаний, а прилагательные - если у вас есть другой (более эффективный) способ сделать это, я хотел бы услышать ваши предложения, я мог бы также узнать некоторые новые вещи:))
for i in negation:
if i in statement:
nega = True
break
else:
nega = False
for i in AnD:
if i in statement:
adj_neg_decl = True
AnD_ici = i
break
else:
adj_nej_decl = False
decl_non_neg_adj_neg(statement)
#Reset variables
for var in (adj_neg_decl, nega):
var = None
Я думал о возможностях использования unicode или utf-8, но я действительно не знаю, как его использовать ... Правильно ли это? Или есть что-то еще, что я могу сделать?
Большое вам спасибо за вашу помощь :)
Вы используете Python 2 или 3? Обработка юникода сильно изменилась между версиями. – Aurora0001
Почему вы должны удалить все акценты? Появляется ли сообщение об ошибке? Затем покажите полное сообщение об ошибке. – furas
Да, вы должны использовать unicode для своей программы. В Python 3 он должен работать из коробки для обычного текста. В Python 2 префикс ваших строк буквой u, как u "mécanique". –