Уведомления

Группа в Telegram: @pythonsu

#1 Сен. 26, 2014 20:10:34

maloun
Зарегистрирован: 2014-09-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парс строк

Доброго времени суток, я в питоне без пяти минут и уже зафейлился по полной.
Нужно составить алгоритм - фильтр строки на “A”-“Z”, “a”-“z”, “0”-“9”, “\”, “_”, “ ”
я вижу это так:

input = "my_str+---=()" 
result = "";
for char in input:
   if Char_in_A_Z_upper(char): result = result + char; 
   if Char_in_0_9(char): result = result + char; 
   if Char_in_a_z_lower(char): result = result + char; 
   if Char_in_additional(char): result = result + char;

но даже в этом перекостыльном способе я не знаю как составить эти функции,
объясните, как регэкспами сделать или хотябы char_in_range функцию

Отредактировано maloun (Сен. 26, 2014 20:12:55)

Офлайн

#2 Сен. 26, 2014 20:33:44

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Парс строк

maloun
фильтр строки на “A”-“Z”, “a”-“z”, “0”-“9”, “\”, “_”, “ ”
Покажи входные данные и ожидаемый результат.
Непонятно что “фильтр” должен делать.



Офлайн

#3 Сен. 26, 2014 20:49:10

maloun
Зарегистрирован: 2014-09-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парс строк

Budulianin
Покажи входные данные и ожидаемый результат.

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

input = “string_te+-===st”
outout = “string_test”

Str = "string_te+-===st"
def char_in_range(AChar, AFirstChar,ALastChar):
  Range = " ".join(map(chr, range(ord(AFirstChar),ord(ALastChar)+1)))
  for Char in Range:
     if Char == AChar: return True     
  return False
result = " "
for char in Str:
  if char_in_range(char, '0', '9'):
      result = result + char
  if char_in_range(char, 'A', 'Z'):
      result = result + char
  if char_in_range(char, 'a', 'z'):
      result = result + char
  if char == "\\":
      result = result + char
  if char == "_":
      result = result + char
  if char == " ":
      result = result + char
print(result)
>>> ================================ RESTART ================================
>>> 
 string_test

Отредактировано maloun (Сен. 26, 2014 20:54:11)

Офлайн

#4 Сен. 26, 2014 20:59:47

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Парс строк

Не, судя по твоему коду не так надо тебе.

''.join(re.findall(r'[a-zA-Z0-9\\ _]', input))

или так

re.sub(r'[^a-zA-Z0-9\\ _]', '', input)



Отредактировано Budulianin (Сен. 26, 2014 21:15:14)

Офлайн

#5 Сен. 26, 2014 21:12:06

Budulianin
От:
Зарегистрирован: 2011-10-18
Сообщения: 1218
Репутация: +  33  -
Профиль   Отправить e-mail  

Парс строк

maloun
и как же составить строку попадающую под описание “всё кроме A-Z,a-z,0-9,\\,\_,\s” ?

Не всё кроме, а пропустить все символы, кроме A-Z,a-z,0-9,\\,\_,\s.

У твоего кода такая логика. Я просто на него не посмотрел сначала.



Отредактировано Budulianin (Сен. 26, 2014 21:13:19)

Офлайн

#6 Сен. 26, 2014 21:16:31

maloun
Зарегистрирован: 2014-09-26
Сообщения: 3
Репутация: +  0  -
Профиль   Отправить e-mail  

Парс строк

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

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version