Расчет недельных продаж с помощью DAX в LuckyTemplates
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Работа со строками — обычная задача в Python. Часто вам нужно выяснить, содержит ли строка другую строку.
Простейшие методы проверки наличия подстроки в строке Python включают оператор «in», функцию find() и метод index(). Более сложные сценарии можно решить с помощью регулярных выражений или внешней библиотеки, такой как Pandas.
В этой статье показано:
четыре простых метода
две более сложные функции регулярных выражений
метод с использованием библиотеки Pandas
Вы изучите каждую технику на примерах их синтаксиса и использования. Вы также получите советы о том, какой метод лучше всего подходит для различных требований.
Давайте начнем!
Оглавление
Основы строк Python
Строка в Python — это последовательность символов, которая используется для представления текстовых данных. Они могут включать буквы, цифры, символы и пробелы.
Это один из встроенных типов данных Python, который можно создать с помощью:
одинарные кавычки (' ')
двойные кавычки (" ")
тройные кавычки («' »' или «»» «»»)
Строки индексируются, что означает, что вы можете получить доступ к определенным символам, ссылаясь на их порядковый номер. Начальный индекс равен 0, что означает, что первый символ строки имеет индекс 0, второй — 1 и так далее.
Далее мы рассмотрим способы проверки подстрок.
4 простейших способа проверить наличие подстрок
Python предоставляет множество способов проверить, существует ли определенная подстрока в большей строке. Некоторые из них более сложны, чем другие. Для самых простых проверок самыми простыми методами являются оператор in или один из трех строковых методов.
в операторе
метод найти()
метод индекса()
Метод подсчета()
1. В операторе
Оператор «in» в Python — это простой и интуитивно понятный способ проверить, существует ли одна строка внутри другой строки. Этот оператор проверяет членство и возвращает логическое значение:
Истинно, если подстрока находится в основной строке
Ложь, если это не так
Вот пример кода:
s = "Hello, world!"
sub = "world"
result = sub in s
print(result) # Output: True
Оператор «in» чувствителен к регистру. Это означает, что он обрабатывает строчные и прописные символы как разные. Приведенный выше код не найдет подстроку «hello», поэтому оператор возвращает false.
Если вы хотите выполнить проверку без учета регистра, вы можете преобразовать основную строку и подстроку в один и тот же регистр перед выполнением проверки:
s = "Hello, world!"
sub = "hello"
result = sub.lower() in s.lower()
print(result) # Output: True
Недостатком оператора in является то, что он не предоставляет позицию подстроки в основной строке. Для этого вам понадобится другой метод в этом разделе. Читай дальше…
2. Метод Найти()
Метод find() возвращает первый индекс, по которому появляется подстрока, или -1 , если подстрока не найдена.
Вы вызываете метод find() для строки s , передавая подстроку в качестве аргумента. Вот пример:
s = "Hello, world!"
sub = "world"
index = s.find(sub)
if index != -1:
print("Found at index:", index) # Output: Found at index: 7
else:
print("Not found")
При желании вы можете указать начальный или конечный индекс, чтобы ограничить поиск. Недостатком этого метода является то, что он останавливается при первом появлении.
3. Метод индекса()
Метод index() очень похож на метод find() , за исключением того, что он вызывает ошибку ValueError , когда подстрока не найдена. Это означает, что вы должны обернуть вызов в секцию Try/Except.
Чтобы использовать метод index() , вызовите его для строки s и передайте подстроку sub в качестве аргумента.
s = "Hello, world!"
sub = "world"
try:
index = s.index(sub)
print("Found at index:", index) # Output: Found at index: 7
except ValueError:
print("Not found")
Этот метод также останавливается на первой подстроке внутри текста.
4. Метод подсчета()
Метод .count() подсчитывает, сколько раз подстрока встречается в исходной строке. Он возвращает целое число, представляющее это количество. Если подстрока не найдена в основной строке, возвращается 0.
Вот простой пример, который ищет букву «о» в тексте «Hello, world!»:
s = "Hello, world!"
sub = "o"
print(s.count(sub)) # Output:2
2 способа сопоставления строк с помощью регулярных выражений
Использование регулярных выражений (регулярных выражений) немного сложнее, чем методы из предыдущего раздела. Однако они дают вам больше возможностей для поиска и анализа текста, с которым вы имеете дело.
Два самых простых способа в модуле re :
поиск()
найти все()
1. повторный поиск()
Функция search () в модуле re ищет шаблон в заданной строке и возвращает объект соответствия, если совпадение найдено. В противном случае возвращается None .
По умолчанию функция чувствительна к регистру. Вы можете использовать флаг re.IgnoreCase , чтобы избежать учета регистра.
Вот простой пример, в котором используются условные операторы в зависимости от того, найдена ли строка:
import re
pattern = "python"
text = "I love Python programming"
match = re.search(pattern, text, re.IGNORECASE)
if match:
print("Pattern found")
else:
print("Pattern not found")
Обратите внимание, что этот метод находит первое совпадение, а затем прекращает поиск. Если вы хотите найти все совпадения, то следующее в этом списке для вас.
2. re.Findall()
Этот метод находит все вхождения шаблона поиска в заданной строке и возвращает список, содержащий все совпадения.
В этом примере используется шаблон, который соответствует одной или нескольким цифрам в строке. Текстовая строка «123, 456, 789» содержит три последовательности цифр.
import re
pattern = "d+"
text = "123, 456, 789"
numbers = re.findall(pattern, text)
print(numbers)
Это ответ из примера кода: ['123', '456', '789'].
Как найти подстроки с пандами
Pandas — популярная библиотека для анализа и обработки данных с открытым исходным кодом для Python. Он предоставляет структуры данных и функции, необходимые для обработки и анализа структурированных данных.
Одной из основных структур данных, предоставляемых Pandas, является DataFrame. Вы можете использовать эту универсальную структуру данных для проверки наличия одной строки внутри другой.
Преимущество Pandas в том, что он предоставляет пакеты кода, которые вам пришлось бы много писать на других языках программирования. В частности, внутри функции contains заключено много возможностей.
Функция str.contains() в Pandas
Метод str.contains() проверяет, содержится ли указанный шаблон или регулярное выражение в строке столбца DataFrame.
Вот пример, который импортирует библиотеку и ищет строку в списке строк:
import pandas as pd
# Creating a sample DataFrame
data = {'fruits': ['apple', 'banana', 'cherry', 'watermelon', 'orange']}
df = pd.DataFrame(data)
# Searching for substrings in the 'fruits' column
has_an = df['fruits'].str.contains(pat='an', regex=False)
# Filtering the DataFrame based on the search results
filtered_df = df[has_an]
print(filtered_df)
В этом примере мы ищем подстроку «an» в столбце «фрукты» и соответствующим образом фильтруем DataFrame. Результат будет:
1 банан
4 апельсина
Если вам нужны дополнительные примеры того, что могут делать Pandas, посмотрите это видео:
Советы по выбору определенного метода в Python
Выбор метода во многом зависит от конкретных требований вашей задачи.
Вот четыре причины выбрать один из методов, которые вы узнали из этой статьи, а также один бонусный метод, о котором вы узнаете в другом месте этого блога:
Скорость обработки
Вам нужно знать расположение подстроки
Вам нужно знать количество вхождений подстроки
Вы хотите сопоставить сложные шаблоны
Выполнение анализа текста
1. Скорость обработки
'in' 0perator - лучший выбор, если вы просто хотите узнать, существует ли подстрока в строке.
Это просто, интуитивно понятно и быстро для этой цели. Однако он не предоставляет информацию о расположении или количестве подстроки.
2. Расположение подстроки
Используйте методы .find() или .index() , если вам нужно узнать позицию первого вхождения подстроки в строке.
Оба они возвращают индекс первого вхождения подстроки.
3. Количество подстрок
Используйте метод .count() , если вы хотите узнать, сколько раз подстрока встречается в строке.
4. Сложные узоры
Если вам нужно сопоставить сложные шаблоны или выполнить поиск без учета регистра, регулярные выражения являются наиболее гибкими. Функция re.search() может обрабатывать шаблоны, выходящие за рамки простых подстрок, и может легко выполнять поиск без учета регистра.
Однако регулярные выражения могут быть излишними для простых проверок подстрок, а также могут быть медленнее и сложнее в использовании и обслуживании.
5. Выполнение анализа текста
Ознакомьтесь с нашей статьей об анализе текста в Python , в которой показано, как работать с библиотекой textblob.
Вы можете использовать функцию .tags для проверки частей речи или функцию .ngram для поиска слов, которые часто встречаются в документе вместе.
Последние мысли
Вы изучили семь методов проверки того, содержится ли одно слово или строковый объект в другом. К ним относятся операторы принадлежности, встроенные функции, регулярные выражения и функции Pandas.
Каждый метод подходит для некоторых ситуаций, но не для всех. Используйте эту статью в качестве шпаргалки , когда вы осваиваете язык программирования Python и выбираете лучшее решение для своей задачи анализа строк.
Помните, что нет универсального метода для всех. Каждый подход имеет свои преимущества и особенности, поэтому не стесняйтесь выбирать тот, который соответствует вашему стилю или конкретной проблеме, которую вы пытаетесь решить. В конце концов, Python призван сделать вашу жизнь проще, так что используйте его гибкость!
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.