Проблема в том, что строка, которую вы прочитали из файла, на самом деле содержит 12 символов: \
, x
, e
, d
, \
, x
, b
, a
, \
, x
, b
и d
, и вы хотите преобразовать это в 3 символа '\xed'
, '\xba'
и' \xbd'
. Здесь могут помочь регулярные выражения для идентификации экранированных символов, начинающихся с \x
:
def unescape(string):
rx = re.compile(r'(\\x((?:[0-9a-fA-F]){2}))')
while True:
m = rx.search(string)
if m is None: return string
string = string.replace(m.group(1), chr(int(m.group(2), 16)))
Вы можете использовать его для предварительной обработки строк, извлеченных из файла (не забудьте импортировать модуль re
):
v_conf_file = 'excl_char_seq.lst'
with open(v_conf_file) as f:
seqlist = [ unescape(line.strip()) for line in fd ]
line = 'weríº½66'
print ([ 1 for seqs in seqlist if seqs in line ])
Когда я контролировал содержимое seqlist
, я получал, как и ожидалось:
>>> print seqlist
['\xed\xba\xbd', '\xed\xa9\x81', '\xed\xba\x91']