Замена символа в строке питона - нечетный вывод с помощью Print - PullRequest
1 голос
/ 08 ноября 2019

Я пытаюсь создать некоторый код, который позволяет мне заменить символ в списке, где позиция определяется целым числом. У меня есть следующий код

# -*- coding: utf-8 -*-
a = 47
text = 'xxxxxxxxxx xxxxx ╟───┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼───╢ xx'
new = list(text)
new[a] = "x"
print ''.join(new)

Но когда я запускаю его, он печатает

xxxxxxxxxx xxxxx ╟───┼────┼x▒▒───┼────┼────┼────┼────┼────┼────┼──────────┼────┼───╢ xx

Вместо

xxxxxxxxxx xxxxx ╟───┼────┼x──┼────┼────┼──────┼────┼────┼────┼────┼────┼────┼───╢ xx

Другими словами, он включает в себя «▒▒» в напечатанной строке,Он добавляет дополнительные символы независимо от того, какой символ заменяется в списке. Что я делаю не так?

Я запускаю его на Raspberry Pi, подключенном через SSH, используя шпаклевку.

1 Ответ

2 голосов
/ 09 ноября 2019

Поскольку вы используете для текста кодировку utf-8 (с не-ascii-символами), вам нужно преобразовать ее в строку Unicode на Python 2, чтобы каждый символ не разбивался на несколько байтов ** перед переходом на список.

Еще лучше, вы можете напрямую определить текст в виде строки Unicode:

text = u'xxxxxxxxxx xxxxx╟───┼────┼────┼────┼────┼────┼────┼────┼────┼────┼────┼───╢ xx'

** В некоторых случаях даже строки Unicode разделяют символы на более чем 1 элемент, но этоне влияет на вас, так как вы находитесь в диапазоне BMP. Если вы хотите узнать больше, прочитайте о UCS-2 против представлений UCS-4

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