Author Topic: Не менее глупые вопросы по Питону  (Read 4853 times)

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 28251
  • Карма: +3894/-327
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #75 on: 11 June 2023, 03:13:44 »
  • 0
  • 0
И да, в данном случае также нет разницы между re.search и find. Но потенциально у re.search возможности гораздо больше, чем у find.
т.е. в данном случае оно вообще не надо было, re.search нужна больше для поиска по маскам, я правильно понимаю?

Offline Квас

  • Ветеран
  • *****
  • Posts: 1222
  • Карма: +352/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #76 on: 11 June 2023, 03:14:32 »
  • 0
  • 0
а амперсанд для конкатенации не поддерживается? странно как-то... ??? :-\

Можно плюсом.

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5359
  • Карма: +1961/-152
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #77 on: 11 June 2023, 03:15:36 »
  • 0
  • 0
Кстати, отсутствие разбиения строки пустой строкой, как в JS сделано, слегка вымораживает.
Понятно, что есть list(string), но ошибки-то зачем кидать?
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 28251
  • Карма: +3894/-327
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #78 on: 11 June 2023, 03:15:56 »
  • 0
  • 0
r-строки отличаются тем, что там нет escape-последовательностей. В данном случае нет разницы между r-строкой и просто строкой. r-строки особенно хороши для написания регулярный выражений, иначе можно задолбаться считать обратные слеши.
но мне понравилось что r фейлит в выражениях с "нечетным числом слешей на конце выражения", поэтому предлагают вот такое:
Quote
rpath2 = r'C:\Windows\system32' + '\\'
чисто ботаническое решение самосозданной проблемы  ;D

Online Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4898
  • Карма: +424/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #79 on: 11 June 2023, 03:26:10 »
  • 0
  • 0
т.е. в данном случае оно вообще не надо было, re.search нужна больше для поиска по маскам, я правильно понимаю?
Да
Дві найголовніші помилки українського народу -- зек і зєк.

Online Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4898
  • Карма: +424/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #80 on: 11 June 2023, 03:32:50 »
  • 0
  • 0
но мне понравилось что r фейлит в выражениях с "нечетным числом слешей на конце выражения", поэтому предлагают вот такое:
Ну в общем да, в первую очередь он предназначен для регулярок(то, что вы назвали "маски"), а виндовые пути -- просто побочный эффект.
« Last Edit: 11 June 2023, 03:36:10 by Upliner »
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Bhudh

  • Дважды герой
  • **
  • Posts: 5359
  • Карма: +1961/-152
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #81 on: 11 June 2023, 04:10:48 »
  • 0
  • 0
1. зачем search, разве нельзя было тоже с find сделать?
Замечу, что к find можно задать тот же вопрос.
Это bad practice.
Quote from: str.find docs
Note The find() method should be used only if you need to know the position of sub. To check if sub is a substring or not, use the in operator:

Code: [Select]
>>> 'Py' in 'Python'
True
Jestem dokładny i dociekliwy. (Wg Pinii.)
Всё, что нужно для торжества зла — это бездействие добрых людей. Поэтому бездействовать не надо. Алексей Навальный

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 28251
  • Карма: +3894/-327
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #82 on: 11 June 2023, 12:10:03 »
  • 0
  • 0
Замечу, что к find можно задать тот же вопрос.
Это bad practice.
доверяю вам на слово, но я знаю/ комментирую только то, что мне показывают тов. от Ай-би-эм  :dunno: Оператор "ин" они не представляли (ещё), сделали только с re.search() и мне это показалось ненужным, именно для поиска того, что они искали.

Вообще педагогически материал подается очень плохо, в практической части, в лаборатории постоянно выскакивают какие-то вещи, которых не было в теоретической, поэтому у меня столько вопросов.

Вопрос по маскам:
Code: [Select]
pattern = r"\d\d\d\d\d\d\d\d\d\d"  # Matches any ten consecutive digitsэто мне понятно, но что делать если у нас неизвестное число цифр? Вот мы ищем в произвольном тексте все целые числа, как тогда надо описать маску для поиска?


Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 28251
  • Карма: +3894/-327
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #83 on: 11 June 2023, 12:13:21 »
  • 0
  • 0
возвращаясь к нашему Джексону:
Code: [Select]
s1 = "Michael Jackson is the best"

# Define the pattern to search for
pattern = r"Jackson"

# Use the search() function to search for the pattern in the string
result = re.search(pattern, s1)

А что этот re.search() вообще возвращает? X.find() возвращал индекс, а что сёрч делает? :dunno: Я его распечатал, мне яснее не стало:
Quote
<re.Match object; span=(8, 15), match='Jackson'>
это что такое вообще?

Я распечатал даже тип:
Quote
<class 're.Match'>
:o :o :o

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 28251
  • Карма: +3894/-327
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #84 on: 11 June 2023, 12:17:26 »
  • 0
  • 0
Про границу слова при поиске:
Quote
\b   Matches the boundary between a word character and a non-word character   "cat" matches "\bcat\b" in "The cat sat on the mat"
\B   Matches any position that is not a word boundary   "cat" matches "\Bcat\B" in "category" but not in "The cat sat on the mat"

почему второе правильно? разве cat- в "category" не "\bcat\B"? или я не так понимаю и \b, \B только попарно работают?

Online Euskaldun

  • Администратор
  • Трижды герой
  • *****
  • Posts: 28251
  • Карма: +3894/-327
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #85 on: 11 June 2023, 12:33:44 »
  • 0
  • 0
Хочется поплакать:
Code: [Select]
pattern = r"\d\d\d\d\d\d\d\d\d\d"  # Matches any ten consecutive digits
text = "My Phone number is 1234567890"
match = re.search(pattern, text)

if match:
    print("Phone number found:", match.group())
else:
    print("No match")

что такое X.group() и как оно работает тут?

Offline Квас

  • Ветеран
  • *****
  • Posts: 1222
  • Карма: +352/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #86 on: 11 June 2023, 13:24:16 »
  • 0
  • 0
Code: [Select]
pattern = r"\d\d\d\d\d\d\d\d\d\d"  # Matches any ten consecutive digitsэто мне понятно, но что делать если у нас неизвестное число цифр? Вот мы ищем в произвольном тексте все целые числа, как тогда надо описать маску для поиска?

Квантификатор * матчит любое число повторений (в том числе 0, то есть пустую строку); квантификатор + матчит одно или больше повторений. То есть найти группу из цифр можно выражением r'\d+'.

Кстати, в качестве квантификатора можно использовать число в фигурных скобких: r'\d{10}' - это r'\d\d...<десять раз>\d'.

Online Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4898
  • Карма: +424/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #87 on: 11 June 2023, 13:26:58 »
  • 0
  • 0
А что этот re.search() вообще возвращает?
Так как в re.search длина совпадения может быть разная и в маске можно скобками задать несколько подгрупп, он возвращает специальный объект из которого можно выковыривать как индексы подгрупп, так и их значения.
что такое X.group() и как оно работает тут?
А что непонятно? group() это метод класса re.Match, который возвращает либо совпавшую строку целиком (если нет параметра, или параметр нулевой), либо какую-то отдельную подгруппу, индекс которой задаётся в параметре.
« Last Edit: 11 June 2023, 13:47:38 by Upliner »
Дві найголовніші помилки українського народу -- зек і зєк.

Offline Квас

  • Ветеран
  • *****
  • Posts: 1222
  • Карма: +352/-9
    • View Profile
Re: Не менее глупые вопросы по Питону
« Reply #88 on: 11 June 2023, 13:29:37 »
  • 0
  • 0
разве cat- в "category" не "\bcat\B"?
Именно так, там неправильно написано. Можно даже проверить экспериментально.

или я не так понимаю и \b, \B только попарно работают?
Не, независимо от всего прочего.

Online Upliner

  • Администратор
  • Герой
  • *****
  • Posts: 4898
  • Карма: +424/-18
  • Gender: Male
  • Кис-кис-кис!
    • View Profile
    • лифчег
Re: Не менее глупые вопросы по Питону
« Reply #89 on: 11 June 2023, 13:38:16 »
  • 0
  • 0
И вот небольшой примерчик зачем вообще нужен класс re.Match
Code: [Select]
pattern = r"(\d+)-(\d+)"
text = "My Phone number is 123-456789"
match = re.search(pattern, text)

if match:
    print("Phone first part: ", match.group(1))
    print("Phone second part part: ", match.group(2))
else:
    print("No match")
« Last Edit: 11 June 2023, 13:47:23 by Upliner »
Дві найголовніші помилки українського народу -- зек і зєк.