Уведомления

Группа в Telegram: @pythonsu

#1 Апрель 22, 2014 15:00:05

aCL
Зарегистрирован: 2013-11-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

удаление недопустимых символов из строки

Есть скрипт, который парсит сайт с книгами и складывает полученные файлы (.zip) в положенную папку. Имя файла - название_книги.zip. Название книги получаю с сайта, может содержать символы “:*?”<>|", т.е. те символы, с которыми сохранять файл в винде невозможно. Есть ли строковая функция, удаляющие эти символы? Естественно, нужно оставлять запятые, тире и т.п. Думал пробегать по строке несколькими replace'ами, но как-то неэлегантно…

Офлайн

#2 Апрель 22, 2014 16:12:36

pylin
Зарегистрирован: 2014-04-22
Сообщения: 2
Репутация: +  1  -
Профиль   Отправить e-mail  

удаление недопустимых символов из строки

Я думаю, стоит посмотреть в сторону регулярных выражений и модуля re. По-моему именно функции, чтобы нормализовывала строки под правила именования файлов в windows/*nix нет.

Офлайн

#3 Апрель 22, 2014 23:07:51

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 10016
Репутация: +  857  -
Профиль   Отправить e-mail  

удаление недопустимых символов из строки

>>> import re
>>> 
>>> s = 'abc<>-_()[]defабвг'
>>> 
>>> out = re.sub(r'[<>]', r'', s)
>>> out
'abc-_()[]defабвг'
>>>



Офлайн

#4 Апрель 23, 2014 00:04:02

JOHN_16
От: Россия, Петропавловск-Камчатск
Зарегистрирован: 2010-03-22
Сообщения: 3292
Репутация: +  221  -
Профиль   Отправить e-mail  

удаление недопустимых символов из строки

aCL

filename=s.translate(None, ':*?”<>|')
где s, естественно, исходная строка. Думаю достаточно элегантно.



_________________________________________________________________________________
полезный блог о python john16blog.blogspot.com

Отредактировано JOHN_16 (Апрель 23, 2014 00:05:12)

Офлайн

#5 Апрель 23, 2014 13:19:43

aCL
Зарегистрирован: 2013-11-13
Сообщения: 34
Репутация: +  0  -
Профиль   Отправить e-mail  

удаление недопустимых символов из строки

Ооо, точно, регулярки. Про них пока только пару статеек прочитал, видимо, время ими заняться.
Спасибо)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version