Как проверить пустая ли строка в 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
Вывод
В этом уроке мы узнали о концепции проверки того, является ли строка пустой или нет, и содержит ли она только пробелы или нет. Мы подробно объяснили всю концепцию, взяв все способы проверить, является ли строка пустой. Все способы подробно объясняются с помощью примеров. Вы можете использовать любой из методов, которые вам нравятся, в соответствии с требованиями вашей программы или проекта.
Однако, если у вас есть какие-либо сомнения или вопросы, дайте мне знать в разделе комментариев ниже. Я постараюсь помочь вам как можно скорее.