drno-reg
@drno-reg
см не кратко

Почему replace не работает?

Здравствуйте

#!/usr/local/bin/python
# coding: utf-8
import datetime

date_list=["   10.10.2017"," 13.10.2017", " 12.10.2017", " 10.10.2017"]

for i in range (len(date_list)):
    print(date_list[i], " длина ", len(date_list[i]))
    date_start=date_list[i].replace(" ","")
    print(len(date_start))
    # date_start=date_list[i]
    date_start=datetime.datetime.strptime(date_start, "%d.%m.%Y").date()
    print(date_start)


почему replace в первом, втором и третьем случае решает проблему, в последнем нет и возвращается ошибка

Traceback (most recent call last):
  File "C:/Server/repositories/projects/um/templates/Test/Strings.py", line 12, in <module>
    date_start=datetime.datetime.strptime(date_start, "%d.%m.%Y").date()
  File "C:\Python36\lib\_strptime.py", line 565, in _strptime_datetime
    tt, fraction = _strptime(data_string, format)
  File "C:\Python36\lib\_strptime.py", line 362, in _strptime
    (data_string, format))
ValueError: time data '\xa010.10.2017' does not match format '%d.%m.%Y'

?
  • Вопрос задан
  • 731 просмотр
Решения вопроса 2
dimonchik2013
@dimonchik2013
non progredi est regredi
либо
date_start.strip()
(рекомендую привыкнуть, полезно)

либо таки
" %d.%m.%Y"
( с пробелом в начале)
Ответ написан
\xa0 это неразрывный пробел. в replace используется обычный (\x20).
Решение уже подсказали.
Можно повозиться с регулярными выражениями (для общего ознакомления с различными видами извращений):
import re
replacement = ''
string_to_replace = '\xa0  test  data       '
strip_re = re.compile(r'(^\s+)|(\s+$)')
result = strip_re.sub(replacement , string_to_replace)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы