Как найти пробелы в строке питон

Sometimes, we might have a problem in which we need to check if the string has any blank spaces. This kind of problem can be in Machine Learning domain to get specific type of data set. Let’s discuss certain ways in which this kind of problem can be solved. 

Method #1 : Using regex This kind of problem can be solved using the regex utility offered by python. By feeding the appropriate regex string in search(), we can check presence of space in a string. 

Python3

import re

test_str = "Geeks  forGeeks"

print("The original string is : " + test_str)

res = bool(re.search(r"s", test_str))

print("Does string contain spaces ? " + str(res))

Output : 

The original string is : Geeks  forGeeks
Does string contain spaces ? True

Method #2 : Using in operator This task can also be performed using in operator. Just required to check for a space in the string. The verdict returned is true even if a single space is found and false otherwise. 

Python3

test_str = "Geeks  forGeeks"

print("The original string is : " + test_str)

res = " " in test_str

print("Does string contain spaces ? " + str(res))

Output : 

The original string is : Geeks  forGeeks
Does string contain spaces ? True

Method #3: Using find() method.

find() method searches the given string for argument passed and returns the position or else returns -1.

Python3

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

res=False

if(test_str.find(" ")!=-1):

    res=True

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

Method #4: Using isspace() method
 

Python3

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

c=0

res=False

for i in test_str:

    if(i.isspace()):

        c+=1

if(c>=1):

    res=True

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

Time Complexity: O(n)
Auxiliary Space: O(1)

Method #5: Using count() method:

The count() method is a built-in method in Python that returns the number of occurrences of a specified substring in a string. Here is an example of how to use the count() method to check if a string contains any spaces:
 

Python3

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

res = False

if test_str.count(" ") > 0:

    res = True

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

In this code, we first initialize a string called “test_str” which contains the text we want to check for spaces. Next, we call the count() method on the string and pass in ” ” (a single space) as the argument.
The count() method returns the number of occurrences of the specified substring in the string.
We check if the number of spaces greater than zero by using if statement, and if it is true then we set the variable res as true.
Finally, we print the result of whether or not the string contains spaces.

Time complexity: O(n)
Auxiliary Space: O(1)

Method #6: Using operator.countOf() method:

Python3

import operator as op

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

res = False

if op.countOf(test_str, " ") > 0:

    res = True

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

Time complexity: O(n)
Auxiliary Space: O(1)

Method#7:Using Recursion

Python3

def ContainSpace(st,i):

  if i == len(st):

    return False

  if st[i] == " ":

    return True

  return ContainSpace(st,i+1)

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

res = ContainSpace(test_str,0)

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

Time complexity: O(n)
Auxiliary Space: O(n)

Method #8: Using the split() method
 

Python3

test_str = "Geeks forGeeks"

res = False

if len(test_str.split()) > 1:

  res = True

print("Does string contain spaces ? " + str(res))

Output

Does string contain spaces ? True

Time complexity: O(n)
Auxiliary Space: O(n), as it splits the string into a list of words.

Method #9:Using regex.findall() method

Python3

import re

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

res = bool(re.findall(r'[ ]+', test_str))

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

Time complexity: O(n)
Auxiliary Space: O(n)

Method #10:Using the any() function

The any() function is a built-in function in Python that takes an object and returns True if at least one element of the object is truthy, or False if all elements are falsy.

Python3

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

if any(c==' ' for c in test_str):

    res=True

else:

    res=False

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

Time complexity: O(n) iterates over the data structure
Auxiliary Space: O(1) does not takes any space.

Method #11:Using a while loop

Iterating over the string test_str checking each character if it equals to ‘ ‘ then storing the result TRUE and break from the loop else returning FALSE.

Python3

test_string = "Geeks forGeeks"

print("The original string is : " + test_string)

res = False

i = 0

while i < len(test_string):

    if test_string[i] == " ":

        res = True

        break

    i += 1

print("Does string contain spaces ? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces ? True

Time Complexity: O(N) as we are iterating over the string.

Auxiliary Space: O(1) as no extra memory is used.

Method #12: Using reduce():

Algorithm:

  1. Import the reduce() function from the functools module.
  2. Initialize a test string test_str.
  3. Use reduce() function to iterate over each character in test_str and check if it is a space character. The lambda function inside reduce() returns True if x is already True or if y is a space character. Otherwise, it returns False.
  4. The initial value of x in reduce() is False.
  5. The result is stored in res.
  6. Print whether the string contains spaces based on the value of res.

Python3

from functools import reduce

test_str = "Geeks forGeeks"

print("The original string is : " + test_str)

res = reduce(lambda x, y: x or y == " ", test_str, False)

print("Does string contain spaces? " + str(res))

Output

The original string is : Geeks forGeeks
Does string contain spaces? True

Time Complexity: The reduce() method runs in linear time complexity O(n), where n is the length of the input string test_str. This is because reduce() applies the lambda function to each character in test_str one by one. Therefore, the time complexity of this code is O(n).

Space Complexity: The space complexity of this code is O(1). This is because the input string test_str is the only variable that requires memory space, and its size is independent of the input size. The reduce() method does not create a new list, so it doesn’t require additional memory space. Therefore, the space complexity of this code is constant, or O(1).

Last Updated :
05 Apr, 2023

Like Article

Save Article

Время чтения 2 мин.

Строковая функция String isspace() используется в Python для проверки того, содержит ли аргумент все пробельные символы, такие как:

  1. ‘ ‘ — Space
  2. ‘t’ – Horizontal tab
  3. ‘n’ — Newline
  4. ‘v’ — Vertical tab
  5. ‘f’ — Feed
  6. ‘r’ — Carriage return.

Содержание

  1. Что такое функция string isspace() в Python?
  2. Синтаксис
  3. Параметры
  4. Возвращаемое значение
  5. Примеры программ с методом isspace()

String.isspace() — это встроенный метод Python, который сообщает нам, содержит ли данная строка только символы пробела или нет. Метод isspace() возвращает true, если все символы строки являются пробелами, и возвращает false во всех остальных случаях.

Существуют различные типы пробельных символов, такие как ‘n’- новая строка, ‘ ‘-пробел, ‘t’- горизонтальная вкладка и многие другие. С помощью приведенных выше различных типов пробелов мы можем классифицировать, содержит ли наша строка только пробелы или нет, что мы можем проверить с помощью метода isspace().

Синтаксис

Здесь string — это строковая переменная, которая должна быть проверена, содержит ли она все символы, пробелы или нет.

Параметры

Метод String.isspace() не содержит никаких параметров и выдает ошибку при передаче любого параметра.

Возвращаемое значение

Метод возвращает true, если все символы в строке являются пробелами, и false во всех остальных случаях.

Примеры программ с методом isspace()

  • Пример 1: Напишите программу, показывающую работающий метод isspace().

# app.py

h1 = »  «

h2 = «Hello    Boy»

h3 = «nntnn»

h4 = «HelloGirl»

print(h1.isspace())

print(h2.isspace())

print(h3.isspace())

print(h4.isspace())

Вывод:

python3 app.py

True

False

True

False

  • Пример 2: напишите программу, которая проверяет, содержат ли две строки только пробельные символы. Выведите «Yes», если верно, и «No», если ложно.

# app.py

h1 = »  «

h2 = «t»

if(h1.isspace() and h2.isspace()):

    print(«YES»)

else:

    print(«NO»)

Вывод:

  • Пример 3: мы можем вычислить общее количество пробелов в строке.

# app.py

string = ‘KGF movie starringnnnnnn Yash’

count = 0

for a in string:

    if(a.isspace()) == True:

        count += 1

print(count)

Вывод:

Чтобы найти индекс n-ого вхождения needle в haystack строке:

def find_nth(haystack, needle, n):
    """Find *n*-th [overlapping] occurrence of *needle* in *haystack*."""
    i = -1
    for _ in range(n):
        i = haystack.find(needle, i + 1)
        if i == -1:
            break
    return i

Пример:

>>> haystack, needle, n = 'a b c d e', ' ', 3
>>> find_nth(haystack, needle, n)
5

Для проверки (тот же результат в неперекрывающемся случае):

>>> import re
>>> from itertools import islice
>>> next(islice((m.start() for m in re.finditer(re.escape(needle), haystack)), n-1, None), -1)
5

7 ответов

def tt(w): 
    if ' ' in w: 
       print 'space' 
    else: 
       print 'no space' 

>>   tt('b ')
>> space
>>  tt('b b')
>> space
>>  tt('bb')
>> no space

Я нахожусь в поезде, жаль, что не объясняю.. не могу набрать много..

doniyor
18 нояб. 2014, в 06:51

Поделиться

Вы используете isspace, в котором говорится

str.isspace()

Возвращает true, если в строке есть только пробельные символы, и есть хотя бы один символ, иначе false.

Для 8-битных строк этот метод зависит от локали.

Nilesh
18 нояб. 2014, в 07:16

Поделиться

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

код:

import string
def contains_whitespace(s):
    return True in [c in s for c in string.whitespace]

Пример:

>>> contains_whitespace("BB")
False
>>> contains_whitespace("B B")
True

Это, конечно, можно расширить, чтобы проверить, содержит ли какая-либо строка элемент в любом наборе (а не просто пробел). Предыдущее решение — аккуратное, короткое решение, но некоторые могут утверждать, что его трудно читать и меньше Pythonic, чем что-то вроде:

def contains_whitespace(s):
    for c in s:
        if c in string.whitespace:
            return True
    return False

Duke
18 нояб. 2014, в 07:15

Поделиться

Поскольку вы ищете больше, чем просто ' ', где вы можете использовать ' ' in tgt, вы можете использовать any:

for s in ('B ', 'B B', 'BnB', 'BB'):
    print repr(s), any(c.isspace() for c in s)

Печать

'B ' True
'B B' True
'BnB' True
'BB' False

dawg
18 нояб. 2014, в 07:38

Поделиться

user = 'B B'
for x in user:
    if x.isspace():
        print("no")
    else:print("yes")

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

используйте вспомогательную функцию:

def space(text):
    if ' ' in text:
        return True
    else: return False

демо:

>>> ' ' in 'B B'
True
>>> ' ' in 'BB'
False

используйте in для проверки

если вы хотите использовать isspace:

def space(text):
    for x in text:
        if x.isspace():
            return True
    return False

Вместо того, чтобы возвращать True или False, вы также можете вернуть желаемую строку:

>>> def space(text):
...     if ' ' in text:
...         return " yes Spaces"
...     else: return " No Spaces"
... 
>>> space('B B')
' yes Spaces'
>>> space('BB')
' No Spaces'

Hackaholic
18 нояб. 2014, в 06:42

Поделиться

Вы можете использовать str.split, чтобы проверить, содержит ли строка пробелы:

>>> ''.split()
[]
>>> '  '.split()
[]
>>> 'BB'.split()
['BB']
>>> ' B '.split()
['B']
>>> 'B B'.split()
['B', 'B']

Итак, вы можете проверить как

def hasspace(x):
    if x:
        s = x.split()
        return len(s) == 1 and x == s[0]
    return False

Если вы пытаетесь проверить только целые слова в строке (т.е. вас не беспокоят окружающие пространства, которые можно удалить с помощью x.strip()), условие x == s[0] больше не требуется. Проверка становится единственным выражением:

def hasspace(x):
    return x and len(x.split()) == 1

Теперь вы можете сделать

if hasspace(user):
    print("NO!!!")
else:
    print("YES!!!")

Mad Physicist
09 март 2018, в 20:51

Поделиться

In [1]: a<br>
Out[1]: ' btn'

In [2]: (' ' in a)or('t' in a)or('n' in a)<br>
Out[2]: True

Vietnhi Phuvan
18 нояб. 2014, в 18:30

Поделиться

Ещё вопросы

  • 0Выполнить очередь jQuery случайное количество раз
  • 1Почему действие возвращается к предыдущему, когда я получаю данные из базы данных?
  • 1инициализация здесь-карты дает MISSING_LIBRARIES в onEngineInitializationCompleted (ошибка ошибки)
  • 0Символ PortAudio не найден: _PaMacCore_SetupChannelMap на Mountain Lion
  • 0Динамически изменять отображаемый выбранный текст
  • 1Ошибка доступа к данным в элементе сообщения
  • 1Исключение «… целевая машина активно отказалась…» в простом клиент-серверном приложении
  • 0PHP неправильно передает переменную
  • 1Eclipse IDE ошибка компиляции
  • 0Как добавить HTML вокруг строки?
  • 0img и вертикальное выравнивание текста
  • 0Дата-Время в Qt
  • 0Раскрывающееся меню должно оставаться открытым после .hover
  • 0Почему эта операция не дает мне большей точности?
  • 0Объединить массив в установленный массив при случайных индексах в PHP
  • 0мне нужно получить три выбора для дня, месяца, года в одной переменной
  • 1изменить размер ячейки Excel, чтобы соответствовать изображению
  • 0хочу вставить в первый раз посещаемость не обновлять
  • 1OWIN — Selfhosting WebApi без определенного порта
  • 1IQueryable в репозитории
  • 1Как совместить JLabel и JFrame?
  • 0Исключить ограниченные функции из полученного объекта
  • 0Как поменять элемент H1 с H1 в другом документе, используя JQuery
  • 0вернуть элемент в исходное положение после активации .stop ()
  • 1Как сравнить Resultset.getString () с String в Java?
  • 1Snakemake: Как предотвратить выполнение неоднозначных правил?
  • 0Отображать страницу только после завершения асинхронного метода
  • 0Как придать эффект касания div при изменении URL
  • 0Перерыв на слово в iOS7
  • 0Проблемы вычисления выражения постфикса с более чем двумя операндами
  • 1Lightinject — Обнаружена рекурсивная зависимость
  • 1Паспорт Локальная стратегия не называется
  • 1Получение значения с нулем при попытке объединить orderByChild () и startAt ()
  • 0Подсчет сессий с IP-адресов за определенное время
  • 0Ошибка PHP в многопоточной среде, присваивающей значение родительскому статическому члену в том же потоке?
  • 1как быстрее шифровать файлы
  • 1Paramiko использует 100 CPU и скорость снижается, если несколько сценариев Paramiko выполняются одновременно
  • 1ASP.net web api 2 error «Словарь параметров содержит пустую запись для параметра»
  • 0Перетаскивание по требованию. Как включить, запустить и продолжить перетаскивание всего в одном событии mousedown?
  • 0Присвойте значение текстовому окну gridview, используя jquery
  • 0Как зарегистрировать файлы .DLL в 64-битной ОС Windows 8?
  • 1Асинхронная операция findOne () внутри цикла forEach
  • 0Использование среза Javascript внутри углового выражения
  • 1Azure Blob Storage с использованием Https
  • 1Расщепление строк в Java
  • 0Невозможно получить доступ к элементу из класса сортировки c ++
  • 0jQuery: другие ссылки внутри элемента div
  • 1Как отложить вызов в базу данных от gwt?
  • 0Eclipse IDE для C ++
  • 0Как получить доступ к информации о потоке в программе

Python_Deep_5.6_site-5020-7250df.png

В этой статье поговорим про строки в Python, особенности поиска, а также о том, как искать подстроку или символ в строке.

Python_Pro_970x90-20219-1c8674.png

Но сначала давайте вспомним основные методы для обработки строк в Python:
• isalpha(str): если строка в Python включает в себя лишь алфавитные символы, возвращается True;
• islower(str): True возвращается, если строка включает лишь символы в нижнем регистре;
• isupper(str): True, если символы строки в Python находятся в верхнем регистре;
• startswith(str): True, когда строка начинается с подстроки str;
• isdigit(str): True, когда каждый символ строки — цифра;
• endswith(str): True, когда строка в Python заканчивается на подстроку str;
• upper(): строка переводится в верхний регистр;
• lower(): строка переводится в нижний регистр;
• title(): для перевода начальных символов всех слов в строке в верхний регистр;
• capitalize(): для перевода первой буквы самого первого слова строки в верхний регистр;
• lstrip(): из строки в Python удаляются начальные пробелы;
• rstrip(): из строки в Python удаляются конечные пробелы;
• strip(): из строки в Python удаляются и начальные, и конечные пробелы;
• rjust(width): когда длина строки меньше, чем параметр width, слева добавляются пробелы, строка выравнивается по правому краю;
• ljust(width): когда длина строки в Python меньше, чем параметр width, справа от неё добавляются пробелы для дополнения значения width, при этом происходит выравнивание строки по левому краю;
• find(str[, start [, end]): происходит возвращение индекса подстроки в строку в Python. В том случае, если подстрока не найдена, выполняется возвращение числа -1;
• center(width): когда длина строки в Python меньше, чем параметр width, слева и справа добавляются пробелы (равномерно) для дополнения значения width, причём происходит выравнивание строки по центру;
• split([delimeter[, num]]): строку в Python разбиваем на подстроки в зависимости от разделителя;
• replace(old, new[, num]): в строке одна подстрока меняется на другую;
• join(strs): строки объединяются в одну строку, между ними вставляется определённый разделитель.

Обрабатываем строку в Python

Представим, что ожидается ввод числа с клавиатуры. Перед преобразованием введенной нами строки в число можно легко проверить, введено ли действительно число. Если это так, выполнится операция преобразования. Для обработки строки используем такой метод в Python, как isnumeric():

string = input("Введите какое-нибудь число: ")
if string.isnumeric():
    number = int(string)
    print(number)

Следующий пример позволяет удалять пробелы в конце и начале строки:

string = "   привет мир!  "
string = string.strip()
print(string)           # привет мир!

Так можно дополнить строку пробелами и выполнить выравнивание:

print("iPhone 7:", "52000".rjust(10))
print("Huawei P10:", "36000".rjust(10))

В консоли Python будет выведено следующее:

iPhone 7:      52000
Huawei P10:      36000

Поиск подстроки в строке

Чтобы в Python выполнить поиск в строке, используют метод find(). Он имеет три формы и возвращает индекс 1-го вхождения подстроки в строку:
• find(str): поиск подстроки str производится с начала строки и до её конца;
• find(str, start): с помощью параметра start задаётся начальный индекс, и именно с него и выполняется поиск;
• find(str, start, end): посредством параметра end задаётся конечный индекс, поиск выполняется до него.

Python_Pro_970x90-20219-1c8674.png

Когда подстрока не найдена, метод возвращает -1:

    welcome = "Hello world! Goodbye world!"
index = welcome.find("wor")
print(index)       # 6

# ищем с десятого индекса
index = welcome.find("wor",10)
print(index)       # 21

# ищем с 10-го по 15-й индекс
index = welcome.find("wor",10,15)
print(index)       # -1

Замена в строке

Чтобы в Python заменить в строке одну подстроку на другую, применяют метод replace():
• replace(old, new): подстрока old заменяется на new;
• replace(old, new, num): параметр num показывает, сколько вхождений подстроки old требуется заменить на new.

Пример замены в строке в Python:

    phone = "+1-234-567-89-10"

# дефисы меняются на пробелы
edited_phone = phone.replace("-", " ")
print(edited_phone)     # +1 234 567 89 10

# дефисы удаляются
edited_phone = phone.replace("-", "")
print(edited_phone)     # +12345678910

# меняется только первый дефис
edited_phone = phone.replace("-", "", 1)
print(edited_phone)     # +1234-567-89-10

Разделение на подстроки в Python

Для разделения в Python используется метод split(). В зависимости от разделителя он разбивает строку на перечень подстрок. В роли разделителя в данном случае может быть любой символ либо последовательность символов. Этот метод имеет следующие формы:
• split(): в роли разделителя применяется такой символ, как пробел;
• split(delimeter): в роли разделителя применяется delimeter;
• split(delimeter, num): параметром num указывается, какое количество вхождений delimeter применяется для разделения. При этом оставшаяся часть строки добавляется в перечень без разделения на подстроки.

Соединение строк в Python

Рассматривая простейшие операции со строками, мы увидели, как объединяются строки через операцию сложения. Однако есть и другая возможность для соединения строк — метод join():, объединяющий списки строк. В качестве разделителя используется текущая строка, у которой вызывается этот метод:

words = ["Let", "me", "speak", "from", "my", "heart", "in", "English"]

# символ разделителя - пробел
sentence = " ".join(words)
print(sentence)  # Let me speak from my heart in English

# символ разделителя - вертикальная черта
sentence = " | ".join(words)
print(sentence)  # Let | me | speak | from | my | heart | in | English

А если вместо списка в метод join передать простую строку, разделитель будет вставляться уже между символами:

word = "hello"
joined_word = "|".join(word)
print(joined_word)      # h|e|l|l|o

Python_Pro_970x550-20219-0846c7.png

Понравилась статья? Поделить с друзьями:
  • Как найти лямбду в ворде
  • Как исправить шрифт на экране компьютера
  • Как найти подмножества одного множества
  • Как исправить мигание экрана монитора на виндовс 10
  • Как найти менеджер браузеров