Как проверить пустая ли строка python
Перейти к содержимому

Как проверить пустая ли строка python

Как проверить пустая ли строка в Python?

Чтобы проверить, пуста ли строка, вы можете либо использовать строковую переменную вместо условия вместе с оператором not, либо проверить, равна ли строка пустой строке «», используя оператор равенства.

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

Пример 1: использование строки в качестве условия

В этом примере мы возьмем пустую строку и проверим, является ли эта строка пустой или нет, программно, поместив строку вместо условия в условном операторе If.

Если строка пуста, она представляет ложное значение. Итак, если мы используем оператор not со строкой, мы получим true, если строка пуста, и false, если строка не пуста.

Пример 2: с помощью оператора Equal to

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

Синтаксис условия для проверки, равна ли данная строка пустой строке:

Мы будем использовать это условие в операторе If.

В этом руководстве примеров Python мы узнали, как проверить, является ли данная строка пустой или нет.

Как проверить, пуста ли строка?

Есть ли в Python что-то вроде пустой строковой переменной, где вы можете сделать:

Независимо от того, какой самый элегантный способ проверить наличие пустых строковых значений? Я нахожу жесткое кодирование «» каждый раз для проверки пустой строки не таким хорошим.

25 ответов

Пустые строки являются «ложными», что означает, что они считаются false в логическом контексте, так что вы можете просто сделать это:

Это предпочтительный способ, если вы знаете, что ваша переменная является строкой. Если ваша переменная также может быть другого типа, вы должны использовать myString == «» . См. Документацию по тестированию значений истины, чтобы узнать другие значения, которые являются ложными. в булевых контекстах.

Речь идет о сравнении пустых строк. Поэтому вместо проверки на пустоту с not вы можете проверить, равна ли ваша строка пустой строке с «» пустой строкой .

Другим простым способом может быть определение простой функции:

Я бы проверил единство перед тем, как раздеться. Кроме того, я бы использовал тот факт, что пустые строки являются ложными (или ложными). Этот подход подобен Apache StringUtils.isBlank или Strings.isNullOrEmpty Гуавы

Это то, что я хотел бы использовать, чтобы проверить, является ли строка None, OR Empty или Blank:

И полная противоположность проверке, не является ли строка None NOR Empty NOR Blank:

Более краткие формы приведенного выше кода.

Как написано выше, но с ошибкой.

Для тех, кто ожидает такого поведения, как apache StringUtils.isBlank или Guava Strings.isNullOrEmpty:

В случае, если это кому-то пригодится, я разработал быструю функцию замены пустых строк на N / A в списках списков (python 2).

Это полезно для публикации списков списков в базе данных mysql, которая не принимает пробелы для определенных полей (поля, помеченные как NN в схеме. В моем случае это произошло из-за составного первичного ключа).

Я провел некоторые эксперименты со строками, такими как », », ‘\ n’ и т. Д. Я хочу, чтобы isNotWhitespace был True, если и только если переменная foo является строкой, по крайней мере, с одним непробельным символом. Я использую Python 3.6. Вот чем я закончил:

Оберните это в определение метода, если хотите.

Наиболее элегантный способ, вероятно, состоит в том, чтобы просто проверить, является ли он истинным или ложным, например:

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

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

Если вы хотите провести различие между пустыми и нулевыми строками, я бы предложил использовать if len(string) , в противном случае я бы предложил просто if string , как говорили другие. Тем не менее, предостережение о строках, заполненных пробелами, остается в силе, поэтому не забывайте strip .

Если вы просто используете

Невозможно отличить переменную, которая имеет логическое значение False , от пустой строки » :

Однако, если вы добавите простое условие в ваш скрипт, разница будет:

Проверить пустую или пустую строку (более короткий путь):

Однажды я написал что-то похожее на ответ Бартека и вдохновил javascript:

Я нахожу это элегантным, так как он проверяет, что это строка, и проверяет ее длину:

Отвечая на @ 1290. Извините, нет возможности форматировать блоки в комментариях. Значение None не является пустой строкой в Python и не является (пробелами). Ответ от Эндрю Кларка правильный: if not myString . Ответ @rouble зависит от приложения и не отвечает на вопрос ОП. У вас будут проблемы, если вы примете своеобразное определение «пустой» строки. В частности, стандартное поведение заключается в том, что str(None) создает ‘None’ непустую строку.

Однако, если вы должны рассматривать None и (пробелы) как «пустые» строки, вот лучший способ:

Отвечает требованиям @rouble, не нарушая ожидаемое поведение bool строк.

Как насчет этого? Возможно, это не «самый элегантный», но кажется довольно полным и ясным:

Для последовательностей (строк, списков, кортежей) используйте тот факт, что пустые последовательности являются ложными.

Итак, вы должны использовать:

Просто чтобы уточнить, последовательности оцениваются в False или True в логическом контексте, если они пусты или нет. Они не равны False или True .

Когда вы читаете файл по строкам и хотите определить, какая строка пуста, убедитесь, что вы будете использовать .strip() , поскольку в «пустой» строке есть символ новой строки:

Я нахожу жесткое кодирование (sic) «» каждый раз для проверки пустой строки не таким хорошим.

Чистый код подход

Делать это: foo == «» очень плохая практика. «» магическое значение. Вы никогда не должны проверять магические значения (более известные как магические числа)

Что вы должны сделать, это сравнить с описательным именем переменной.

Описательные имена переменных

Кто-то может подумать, что «empty_string» — это описательное имя переменной. Это не .

Прежде чем идти и делать empty_string = «» и подумать, что у вас есть отличное имя переменной для сравнения. Это не то, что означает «описательное имя переменной».

Хорошее описательное имя переменной основано на ее контексте. Вам нужно подумать, что такое пустая строка .

  • Откуда это взялось.
  • Почему это там.
  • Почему вы должны проверить это.

Пример простого поля формы

Вы создаете форму, где пользователь может вводить значения. Вы хотите проверить, написал ли пользователь что-то или нет.

Хорошее имя переменной может быть not_filled_in

Это делает код очень читабельным

Пример тщательного разбора CSV

Вы анализируете файлы CSV и хотите, чтобы пустая строка была проанализирована как None

(Поскольку CSV полностью основан на тексте, он не может представлять None без использования предопределенных ключевых слов)

Хорошее имя переменной может быть CSV_NONE

Это позволяет легко изменять и адаптировать код, если у вас есть новый CSV-файл, представляющий None с другой строкой, отличной от «»

Там нет вопросов о том, если этот кусок кода является правильным. Довольно ясно, что он делает то, что должен делать.

Первый вопрос здесь: почему пустая строка заслуживает особого отношения?

Это скажет будущим кодировщикам, что пустая строка всегда должна рассматриваться как None .

Это потому, что он смешивает бизнес-логику (какое значение CSV должно быть None ) с реализацией кода (с чем мы на самом деле сравниваем)

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

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

len(myString)==0 может потерпеть неудачу, если myString является объектом класса, который наследуется от str и переопределяет метод __len__() .

Аналогичным образом myString == «» и myString.__eq__(«») могут потерпеть неудачу, если myString переопределяет __eq__() и __ne__() .

По какой-то причине «» == myString также одурачивают, если myString переопределяет __eq__() .

myString is «» и «» is myString эквивалентны. Они оба потерпят неудачу, если myString на самом деле не строка, а подкласс строки (оба вернут False ). Кроме того, поскольку они являются проверками идентичности, единственная причина, по которой они работают, заключается в том, что Python использует String Pooling (также называемый String Internment), который использует тот же экземпляр строки, если он интернирован (см. Здесь: Почему сравнение строк с использованием ‘==’ или ‘is’ иногда приводит к другой результат?). И «» интернирован с самого начала в CPython

Большая проблема с проверкой идентичности состоит в том, что String Internment (насколько я мог найти) не стандартизирует, какие строки интернированы. Это означает, что теоретически «» необязательно интернироваться, и это зависит от реализации.

Единственный способ сделать это, который действительно не может быть одурачен, — это тот, который упоминался в начале: «».__eq__(myString) . Поскольку это явно вызывает метод __eq__() пустой строки, его нельзя одурачить, переопределив любые методы в myString, и он надежно работает с подклассами str .

Также полагаться на ложность строки может не сработать, если объект переопределяет его метод __bool__() .

Это не только теоретическая работа, но на самом деле может иметь отношение к реальному использованию, так как я уже видел фреймворки и библиотеки, создающие подклассы str ранее, и использование myString is «» может вернуть неправильный вывод.

Кроме того, сравнение строк с использованием is в целом является довольно злой ловушкой, поскольку иногда она будет работать правильно, но не в других случаях, поскольку объединение строк следует довольно странным правилам.

Тем не менее, в большинстве случаев все упомянутые решения будут работать правильно. Это пост в основном академическая работа.

if stringname: дает false , когда строка пуста. Я думаю, это не может быть проще, чем это.

7 Быстрых способов проверить, пуста ли строка в Python

Способы, с помощью которых мы можем проверить, является ли строка пустой в Python. Строка, в которой есть пробелы, является пустой строкой, но имеет ненулевой размер.

  • Автор записи

Вступление

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

7 Различных способов проверить, пуста ли строка или нет

Давайте обсудим некоторые способы, с помощью которых мы можем проверить, является ли строка пустой строкой или нет.

1. Использование метода len()

Мы будем вычислять длину строки с помощью len() в python. Затем мы проверим, если длина строки равна 0, то строка пуста; в противном случае-нет.

Давайте рассмотрим пример для лучшего понимания концепции:

Здесь мы взяли две входные строки, s и str. s-пустая строка, а str имеет пробелы. Затем мы вычислили длину обеих строк с помощью функции len() в python. Затем мы применили цикл if-else и проверили, если длина строки равна 0, то строка печати пуста, а если она не пуста, то печать не пуста. В len () пробелы не рассматриваются как пустые в строке, что дает вывод как не пустая строка. Наконец, мы напечатали выходные данные обеих строк.

2. Использование оператора not Для Проверки Того, Является Ли Строка Пустой Строкой В Python

Оператор Not используется для выполнения той же задачи, что и функция len (). Пустая строка всегда эквивалентна False в Python. Если мы хотим проверить, является ли строка пустой или нет, мы можем проверить ее с помощью оператора not .

Давайте рассмотрим пример для лучшего понимания концепции:

Здесь мы взяли две входные строки, s и str. s-пустая строка, а str имеет пробелы. Затем мы применили условие if else, в котором мы проверили, если нет в строке, то строка пуста. В противном случае он не пуст. Оператор not также не обрабатывает пробелы как пустую строку, так что выходные данные будут приходить как не пустая строка второй входной строки. Наконец-то мы напечатали результат.

3. Использование функции and operator + strip() для проверки того, является ли строка пустой строкой в python

Иногда мы видим, что пробелы, присутствующие в строке, не рассматриваются как пустые строки. Таким образом, когда мы проверяем пустую строку, мы также можем проверить наличие пробелов с помощью функции strip ().

Давайте рассмотрим пример для лучшего понимания концепции:

Здесь мы взяли две входные строки, s и str. s-пустая строка, а str имеет пробелы. Мы применили условие if-else и проверили с помощью функции strip (), что строка пуста или нет. Если условие становится ложным, это означает, что строка пуста, а остальные блоки выполняются. В этой функции пробелы также рассматриваются как пустые строки. Наконец-то мы напечатали результат.

4. Использование функции Strip() только Для Проверки Пустой Строки В Python

Иногда мы видим, что пробелы, присутствующие в строке, не рассматриваются как пустые строки. Таким образом, когда мы проверяем пустую строку, мы также можем проверить наличие пробелов с помощью функции strip ().

Давайте рассмотрим пример для лучшего понимания концепции:

Здесь мы взяли две входные строки, s и str. s-пустая строка, а str имеет пробелы. Мы применили условие if else, при котором мы удаляем строки, то есть пробелы удаляются, а затем, если строка становится пустой, она будет пустой строкой. В противном случае строка не будет пустой. Наконец-то мы напечатали результат.

5. Использование not operator + str.isspace()

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

Давайте рассмотрим пример для лучшего понимания концепции:

Здесь мы взяли две входные строки, s и str. s-пустая строка, а str имеет пробелы. Мы применили условие if-else. В условии if-else мы применили функцию isspace () , которая проверит все строковые пробелы. Наконец, мы напечатали вывод, и вы можете видеть вывод, что обе строки пусты.

6. Использование метода __eq__

Dunder в основном сообщает методы, которые имеют двойное подчеркивание до и после их имен. Мы также можем проверить пустую строку с помощью метода __eq__.

Давайте рассмотрим пример для лучшего понимания концепции:

Здесь мы взяли две входные строки, s и str. s-пустая строка, а str имеет пробелы. Мы взяли метод __eq__. Мы применили данный метод в условии if-else и проверили, пуста ли строка или нет. Наконец-то мы напечатали результат. Этот метод также не рассматривает пробелы как пустые строки.

7. Использование Регулярных Выражений Для Проверки Пустой Строки В Python

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

Давайте рассмотрим пример для лучшего понимания концепции:

Здесь мы взяли две входные строки, s и str. s-пустая строка, а str имеет пробелы. Мы импортировали библиотеку re в python. Затем мы применили условие if-else с заданным форматом, чтобы проверить, является ли строка пустой или нет. Если условие if удовлетворяет, то вывод выводится как пустая строка. В противном случае вывод выводится как не пустая строка. Следовательно, вы можете видеть результат.

Также Читайте: 5 Способов проверить, является ли строка целочисленной в Python

Вывод

В этом уроке мы узнали о концепции проверки того, является ли строка пустой или нет, и содержит ли она только пробелы или нет. Мы подробно объяснили всю концепцию, взяв все способы проверить, является ли строка пустой. Все способы подробно объясняются с помощью примеров. Вы можете использовать любой из методов, которые вам нравятся, в соответствии с требованиями вашей программы или проекта.

Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *