Напишите встроенную точку с запятой ascii как удобочитаемый - PullRequest
0 голосов
/ 08 мая 2019

У меня есть текстовый файл с разделителями табуляции с символами ascii для точек с запятой и знаками равенства в некоторых полях, которые я анализирую; т.е. \ x3b и \ x3d. Я не могу понять, как преобразовать их обратно в мой код, хотя в командной строке это делается автоматически.

Я пытался использовать кодеки и кодировать для чтения и записи, а также string.replace

temp[8].replace("\x3b",";")
file=codecs.open(filename, 'r', encoding='ascii') # or utf-8

Хотелось бы увидеть: расстояние = 7117; расстояние = 1508

но я просто получаю строку ввода: расстояние \ x3d7117 \ x3bdist \ x3d1508

Когда я набираю это в командной строке Python:

юникода ( "расстояние \ x3d7117 \ x3bdist \ x3d1508")

Вывод:

расстояние = 7117; расстояние = 1508

Когда я добавляю это в мой код:

print unicode(dist\x3d7117\x3bdist\x3d1508)

я получаю расстояние = 7117; расстояние = 1508

Но когда я вставляю переменную, содержащую эту строку

print unicode(temp[7])

Я получаю: расстояние \ x3d7117 \ x3bdist \ x3d1508

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 08 мая 2019

Трудно быть уверенным, не увидев repr данных, но это должно сработать:

>>> s = 'dist\\x3d7117\\x3bdist\\x3d1508'
>>> fixed = s.decode('string-escape')
>>> print fixed
dist=7117;dist=1508
...