#python #sockets
#python #сокеты
Вопрос:
Когда я использую программу сокета python, мы даем такую опцию, как:
1) Input A to show your name
2) Input B to show your age
3) Input other to set your name
>>
Когда клиент вводит ‘Too’ кнопка удаления ‘m’, сервер получает ‘Too x1bm’.
Как мне преобразовать ‘Too x1bm’ в ‘Tom’ в Python?
Также могут быть другие управляющие символы, такие как ‘переместить курсор’ и ‘tab’.
Комментарии:
1. Это Python2? У меня нет проблемы ни в Python2, ни в Python3. Я на Mac.
2. Какую функцию вы используете для захвата входных данных? Использование
input()
илиraw_input()
на Python2 должно обрабатывать обратные пробелы, клавиши курсоров и т. Д. Просто отлично.3.
x1b
является ли начало en.wikipedia.org/wiki/ANSI_escape_code — вам нужно будет написать функцию для анализа любого из них, который может сгенерировать ваша клиентская программа.4. Программируя сокет, я не могу использовать функцию ввода или raw_input. можно использовать только sock.send sock.recv
5. Покажите код, который генерирует это.
Ответ №1:
Мое первое предположение было бы:
line = 'Toox1bm'
if 'x1b' in line:
while True:
index = line.find('x1b')
if index > 0:
line = line[:index - 1] line[index 1:]
else:
break
line = line.replace('x1b', '')
Комментарии:
1. Есть ли библиотека для этого?
2. Windows ‘delete’ — это ‘x1b’
3. Mac ‘delete’ — это ‘ x7f’
4. Я не знаю о такой библиотеке.
Ответ №2:
Если вы знаете все «неправильные символы», вы можете использовать .replace для удаления ненужных частей.
'Toox1bm'.replace(a[a.index('x1b')-1:a.index('x1b') 1],'')
returns >>> Tom
Комментарии:
1. Сервер получает ‘Toox1bm’ не в x1bm’
2. Я исправил это, чтобы удалить x1b’ и символ перед ним.