Уведомления

Группа в Telegram: @pythonsu

#1 Май 24, 2017 10:35:11

Snowmaze
Зарегистрирован: 2016-11-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

import re
string = "AV kjm AV"
pattern = r"AV"
def finds():
global string,pattern
if not pattern in string:
return
print(pattern,string)
result = re.match(pattern, string)
print(result.start())
print(result.end())
string = string.replace(pattern, '' , 1)
finds()
finds()

Отредактировано Snowmaze (Май 24, 2017 10:36:39)

Офлайн

#2 Май 24, 2017 10:45:31

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

Потому что не хорошо пользоваться глобальными переменными. Передавай строку в функцию как параметр.



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#3 Май 24, 2017 10:53:34

Snowmaze
Зарегистрирован: 2016-11-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

Rodegast
Потому что не хорошо пользоваться глобальными переменными. Передавай строку в функцию как параметр.
А как это сделать лучше?Я кривой xD

Офлайн

#4 Май 24, 2017 11:10:38

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

 import re
 
def finds(string, pattern):
    ....
    return result
print(finds("AV kjm AV", r"AV"))



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#5 Май 24, 2017 11:36:37

Snowmaze
Зарегистрирован: 2016-11-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

Rodegast
Всё равно выскакивает ошибка

Офлайн

#6 Май 24, 2017 12:04:17

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

> Всё равно выскакивает ошибка

Код + ошибку в студию!



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

#7 Май 24, 2017 12:38:16

Snowmaze
Зарегистрирован: 2016-11-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

Rodegast
> Всё равно выскакивает ошибкаКод + ошибку в студию!
AV AV kjm AV
0
2
AV kjm AV
Traceback (most recent call last):
File “./prog.py”, line 12, in <module>
File “./prog.py”, line 10, in finds
File “./prog.py”, line 7, in finds
AttributeError: ‘NoneType’ object has no attribute ‘start’
 import re
def finds(string,pattern):
 if not pattern in string:
  return
 print(pattern,string)
 result = re.match(pattern, string) 
 print(result.start())
 print(result.end())
 string = string.replace(pattern, "" , 1)
 finds(string,pattern)
 return result
print(finds("AV kjm AV", r"AV"))

Офлайн

#8 Май 24, 2017 12:50:38

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

Так работает:

 import re
def finds(string,pattern):
	if pattern in string:
		print(pattern,string)
		result = re.match(pattern, string)
		print(result.start())
		print(result.end())
		return string.replace(pattern, "" , 1)
print(finds("AV kjm AV", r"AV"))



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Отредактировано Rodegast (Май 24, 2017 12:51:20)

Офлайн

#9 Май 24, 2017 13:02:20

Snowmaze
Зарегистрирован: 2016-11-14
Сообщения: 12
Репутация: +  0  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

Rodegast
Так работает:
Прикол в том, что он ищет только первые 2 индекса слова. А мне надо все индексы. Поэтому я и вызывал повторно функцию. Но когда вызывается 2 раз поиск выдает None

Офлайн

#10 Май 24, 2017 14:57:01

Rodegast
От: Пятигорск
Зарегистрирован: 2007-12-28
Сообщения: 2679
Репутация: +  182  -
Профиль   Отправить e-mail  

Почему поиск после второго вызыва функции возращает None?

Это без регилярок делается.

 >>> def find(string, arg=None, start=0):
...     arg = arg or []
...     dat = string.find(obr, start)
...     if dat > -1:
...         arg.append((dat, dat+len(obr)))
...         return find(string, arg, dat+len(obr))
...     return arg
... 
>>> find("AV kjm AV")
[(0, 2), (7, 9)]



С дураками и сектантами не спорю, истину не ищу.
Ели кому-то правда не нравится, то заранее извиняюсь.

Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version