Это кажется очень очевидной ошибкой, которую я пытаюсь решить уже почти час. :(Как использовать регулярное выражение или заменить для очистки списка?
lst = ['\xa0\xa0+11-9188882266\xa0\xa0+01-9736475634 ','\xa0\xa0+11-9177772266\xa0\xa0+01-9736475234']
Я пытаюсь захватить цифры, дефис и знак + только. В основном удалить все \xa0
.
Я думал, что Regex
будет правильный путь идти о нем. Пробовал и не удалось:
mRegex = (['+0-9-'])
lst = re.match(mRegex,lst)
Traceback (most recent call last): File "", line 1, in File "C:\Python34\lib\re.py", line 160, in match return _compile(pattern, flags).match(string) File "C:\Python34\lib\re.py", line 282, in _compile p, loc = _cache[type(pattern), pattern, flags] TypeError: unhashable type: 'list'
Я дал ему еще несколько попыток с regex
затем перешел на replace
:
h.replace(r"\xa0","")
Он ничего к lst
не делать. Остается точно такой же.
Когда я делаю len(lst[0])
, я получаю 33
, что очень странно.
В: с
for i in lst[0]:
print(i)
выход не показывает \xa0
.
Я полностью смущен здесь.
Спасибо. Это решение работает отлично. Тем не менее, в то же время я попытался: «h = lst [0]' 'h.split()' и по какой-то причине теперь я получаю только этот номер как два отдельных элемента списка. именно то, что я хотел, но было бы здорово, если бы объяснение этого возможно. – Sid
Это потому, что '\ xa0' является своего рода пробелом (0x20 + 0x80 = 0xa0), используемым в консоли Windows. 'split' обнаруживает его и разбивает числа в соответствии с пробелом. –
Спасибо. Еще многое предстоит узнать. – Sid