Как проверить, содержит ли строка специальные символы в Python

PythonPythonBeginner
Практиковаться сейчас

💡 Этот учебник переведен с английского с помощью ИИ. Чтобы просмотреть оригинал, вы можете перейти на английский оригинал

Введение

В этом лабораторном занятии (LabEx) вы научитесь проверять, содержит ли строка специальные символы в Python. Это включает определение того, что считается специальным символом, а затем использование различных методов для обнаружения их наличия в строке.

В лабораторном занятии (LabEx) вас научат определять специальные символы с использованием модуля string и пользовательских определений. Затем вы изучите методы, такие как регулярные выражения и функция str.isalnum(), чтобы определить строки, содержащие эти специальные символы. По завершении этого лабораторного занятия (LabEx) вы получите знания, необходимые для эффективной обработки специальных символов в своих Python-программах.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/BasicConceptsGroup(["Basic Concepts"]) python(("Python")) -.-> python/ControlFlowGroup(["Control Flow"]) python(("Python")) -.-> python/FunctionsGroup(["Functions"]) python(("Python")) -.-> python/ModulesandPackagesGroup(["Modules and Packages"]) python(("Python")) -.-> python/AdvancedTopicsGroup(["Advanced Topics"]) python/BasicConceptsGroup -.-> python/strings("Strings") python/ControlFlowGroup -.-> python/conditional_statements("Conditional Statements") python/FunctionsGroup -.-> python/function_definition("Function Definition") python/ModulesandPackagesGroup -.-> python/importing_modules("Importing Modules") python/ModulesandPackagesGroup -.-> python/standard_libraries("Common Standard Libraries") python/AdvancedTopicsGroup -.-> python/regular_expressions("Regular Expressions") subgraph Lab Skills python/strings -.-> lab-559570{{"Как проверить, содержит ли строка специальные символы в Python"}} python/conditional_statements -.-> lab-559570{{"Как проверить, содержит ли строка специальные символы в Python"}} python/function_definition -.-> lab-559570{{"Как проверить, содержит ли строка специальные символы в Python"}} python/importing_modules -.-> lab-559570{{"Как проверить, содержит ли строка специальные символы в Python"}} python/standard_libraries -.-> lab-559570{{"Как проверить, содержит ли строка специальные символы в Python"}} python/regular_expressions -.-> lab-559570{{"Как проверить, содержит ли строка специальные символы в Python"}} end

Определение специальных символов

На этом этапе вы научитесь определять специальные символы в Python. Специальные символы - это символы, которые не являются алфавитно-цифровыми (буквами или цифрами). Они включают в себя такие символы, как знаки пунктуации, пробелы и другие нестандартные символы. Определение и обработка этих символов является важной задачей для таких задач, как очистка данных, валидация и обработка текста.

Сначала создадим Python-скрипт с именем define_special_characters.py в каталоге ~/project с помощью редактора VS Code.

## Content of define_special_characters.py
import string

special_characters = string.punctuation
print("Special characters:", special_characters)

Вот что делает этот код:

  1. import string: Эта строка импортирует модуль string, который предоставляет набор строковых констант, включая предопределенную строку общих знаков пунктуации.
  2. special_characters = string.punctuation: Эта строка присваивает строку знаков пунктуации из string.punctuation переменной special_characters.
  3. print("Special characters:", special_characters): Эта строка выводит значение переменной special_characters в консоль вместе с описательным меткой.

Теперь запустим скрипт. Откройте терминал и выполните следующую команду:

python define_special_characters.py

Вы должны увидеть следующий вывод:

Special characters: !"#$%&'()*+,-./:;<=>?@[\]^_`{|}~

Этот вывод показывает строку специальных символов, определенных в константе string.punctuation.

Вы также можете определить собственный набор специальных символов. Например, изменим скрипт, чтобы включить пробелы и некоторые дополнительные символы.

Откройте define_special_characters.py в VS Code и измените его следующим образом:

## Modified content of define_special_characters.py
special_characters = "!@#$%^&*()_+=-`~[]\{}|;':\",./<>?" + " "
print("Special characters:", special_characters)

В этом измененном скрипте мы создали строку, содержащую комбинацию символов и пробел.

Запустите скрипт еще раз:

python define_special_characters.py

Вы должны увидеть следующий вывод:

Special characters: !@#$%^&*()_+=-`~[]{}|;':",./<>?

Этот вывод показывает пользовательский набор специальных символов, который вы определили.

Понимание того, как определять и идентифицировать специальные символы, является фундаментальным навыком в программировании на Python. В следующих шагах вы научитесь использовать регулярные выражения и метод isalnum() для более эффективной работы с специальными символами.

Использование регулярных выражений

На этом этапе вы научитесь использовать регулярные выражения в Python для определения специальных символов. Регулярные выражения - это мощные инструменты для поиска шаблонов в строках.

Сначала создадим Python-скрипт с именем regex_special_characters.py в каталоге ~/project с помощью редактора VS Code.

## Content of regex_special_characters.py
import re

def find_special_characters(text):
    special_characters = re.findall(r"[^a-zA-Z0-9\s]", text)
    return special_characters

text = "Hello! This is a test string with some special characters like @, #, and $."
special_chars = find_special_characters(text)

print("Special characters found:", special_chars)

Вот что делает этот код:

  1. import re: Эта строка импортирует модуль re, который предоставляет операции с регулярными выражениями.
  2. def find_special_characters(text):: Здесь определяется функция, которая принимает строку в качестве входных данных и находит все специальные символы в ней.
  3. special_characters = re.findall(r"[^a-zA-Z0-9\s]", text): Эта строка использует функцию re.findall() для поиска всех символов во входной строке, которые не являются алфавитно-цифровыми (от a до z, от A до Z, от 0 до 9) или пробелами (\s). [^...] - это отрицательный класс символов, то есть он соответствует любому символу, не входящему в указанный набор.
  4. return special_characters: Эта строка возвращает список найденных специальных символов.
  5. Остальные строки определяют пример строки, вызывают функцию для поиска специальных символов в ней и выводят результат.

Теперь запустим скрипт. Откройте терминал и выполните следующую команду:

python regex_special_characters.py

Вы должны увидеть следующий вывод:

Special characters found: ['!', '@', ',', '#', '$', '.']

Этот вывод показывает список специальных символов, найденных во входной строке с использованием регулярного выражения.

Давайте изменим скрипт, чтобы использовать другое регулярное выражение, которое соответствует только знакам пунктуации.

Откройте regex_special_characters.py в VS Code и измените его следующим образом:

## Modified content of regex_special_characters.py
import re
import string

def find_punctuation_characters(text):
    punctuation_chars = re.findall(r"[" + string.punctuation + "]", text)
    return punctuation_chars

text = "Hello! This is a test string with some punctuation like ., ?, and !."
punctuation = find_punctuation_characters(text)

print("Punctuation characters found:", punctuation)

В этом измененном скрипте мы использовали string.punctuation для определения набора знаков пунктуации, с которыми будем сравнивать.

Запустите скрипт еще раз:

python regex_special_characters.py

Вы должны увидеть следующий вывод:

Punctuation characters found: ['!', '.', '?', '!']

Этот вывод показывает список знаков пунктуации, найденных во входной строке с использованием регулярного выражения и константы string.punctuation.

Использование регулярных выражений предоставляет гибкий и мощный способ определения и извлечения специальных символов из строк в Python.

Проверка с использованием str.isalnum()

На этом этапе вы научитесь использовать метод str.isalnum() в Python для проверки, является ли символ алфавитно-цифровым (то есть буквой или цифрой). Этот метод представляет собой простой и эффективный способ определения специальных символов путем проверки, является ли символ не алфавитно-цифровым.

Сначала создадим Python-скрипт с именем isalnum_check.py в каталоге ~/project с помощью редактора VS Code.

## Content of isalnum_check.py
def check_special_character(char):
    if not char.isalnum():
        return True
    else:
        return False

test_characters = ['a', '1', '!', ' ']

for char in test_characters:
    if check_special_character(char):
        print(f"'{char}' is a special character.")
    else:
        print(f"'{char}' is an alphanumeric character.")

Вот что делает этот код:

  1. def check_special_character(char):: Здесь определяется функция, которая принимает один символ в качестве входных данных.
  2. if not char.isalnum():: Эта строка проверяет, является ли символ не алфавитно-цифровым с использованием метода isalnum(). Метод isalnum() возвращает True, если символ является буквой или цифрой, и False в противном случае. Ключевое слово not инвертирует результат, поэтому условие истинно, если символ не является алфавитно-цифровым.
  3. Остальные строки определяют список тестовых символов и проходят по ним в цикле, вызывая функцию для проверки, является ли каждый символ специальным, и выводя результат.

Теперь запустим скрипт. Откройте терминал и выполните следующую команду:

python isalnum_check.py

Вы должны увидеть следующий вывод:

'a' is an alphanumeric character.
'1' is an alphanumeric character.
'!' is a special character.
' ' is a special character.

Этот вывод показывает результат проверки каждого символа в списке с использованием метода isalnum().

Давайте изменим скрипт, чтобы проверить строку на наличие специальных символов.

Откройте isalnum_check.py в VS Code и измените его следующим образом:

## Modified content of isalnum_check.py
def find_special_characters(text):
    special_chars = []
    for char in text:
        if not char.isalnum() and not char.isspace():
            special_chars.append(char)
    return special_chars

test_string = "Hello! This is a test string with some special characters like @, #, and $."
special_characters = find_special_characters(test_string)

print("Special characters found:", special_characters)

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

Запустите скрипт еще раз:

python isalnum_check.py

Вы должны увидеть следующий вывод:

Special characters found: ['!', '@', ',', '#', '$', '.']

Этот вывод показывает список специальных символов, найденных во входной строке с использованием метода isalnum().

Использование метода isalnum() предоставляет простой и эффективный способ определения специальных символов в Python.

Резюме

В этом лабораторном занятии вы научились определять специальные символы в Python. Это включало импорт модуля string и использование константы string.punctuation для доступа к предопределенной строке общих знаков пунктуации. Вы также изучили, как определить собственный набор специальных символов, объединив определенные символы и пробелы в строку.

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