При разбиении строки, разделенной запятой, на список в Python, если между ними нет пробелов, работает просто split(). Если пробелы есть, полезно объединить ее с функцией strip(), чтобы удалить лишние пробелы. Кроме того, использование нотации понимания списка — это разумный способ написания.
В этом разделе мы сначала объясним следующее.
- Разделить строку с заданным разделителем и вернуть ее в виде списка
split()
- Удаление лишних символов из начала и конца строки.
strip()
- Нотация понимания списка для применения функций и методов к элементам списка.
Здесь также показано, как составить список строк, разделенных пробелами и запятыми, удалив пробелы, как показано ниже.'one, two, three'
Кроме того, мы обсудим следующее
- Как получить его в виде списка чисел
- Как использовать функцию join() для объединения списка и превращения его в строку
split(): Разделить строку с заданным разделителем и вернуть ее в виде списка
Используя метод split() для строк, вы можете разделить строку с указанным разделителем и получить ее в виде списка (массива). Указанный разделитель может быть задан следующим аргументом.sep
Если аргумент sep опущен и не указан разделитель, то функция разделяет строку на пробелы и возвращает список. Последовательные пробелы и табуляции также разделят список, поэтому если вы хотите создать список строк, разделенных табуляцией, вы можете использовать split() без аргумента.
s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one two three' l = s.split() print(l) # ['one', 'two', 'three'] s = 'one\ttwo\tthree' l = s.split() print(l) # ['one', 'two', 'three']
Если в аргументе sep указан разделитель, он делит список на эту строку и возвращает список.
s = 'one::two::three' l = s.split('::') print(l) # ['one', 'two', 'three']
В случае строки, разделенной запятой, если нет лишнего пробела, то проблемы нет, но если вы запустите split() с запятой в качестве разделителя для строки, разделенной запятой + пробел, то в итоге вы получите список строк с пробелом, оставленным в начале.
s = 'one,two,three' l = s.split(',') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(',') print(l) # ['one', ' two', ' three']
Вы можете использовать запятую + пробел в качестве разделителя следующим образом, но это не сработает, если количество пробелов в исходной строке отличается.', '
s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', 'three'] s = 'one, two, three' l = s.split(', ') print(l) # ['one', 'two', ' three']
Для работы с двумя пробелами можно использовать строковый метод strip(), о котором будет рассказано далее.
strip(): Удаление лишних символов из начала и конца строки.
strip() — это метод удаления лишних символов из начала и конца строки.
Если аргумент опущен, возвращается новая строка с удаленными символами пробелов. Сама исходная строка не изменяется.
s = ' one ' print(s.strip()) # one print(s) # one
Если в качестве аргумента указана строка, то символы, содержащиеся в строке, будут удалены.
s = '-+-one-+-' print(s.strip('-+')) # one
В этом случае пробелы не удаляются. Поэтому, если вы хотите удалить пробельные символы, передайте в качестве аргумента строку, включающую пробелы, как показано ниже.'-+ '
s = '-+- one -+-' print(s.strip('-+')) # one s = '-+- one -+-' print(s.strip('-+ ')) # one
strip() обрабатывает оба конца, но также доступны следующие функции.
lstrip()
:Процесс — это только началоrstrip()
:Обрабатывайте только конец строки.
Нотация для понимания списка: применение функций и методов к элементам списка
Если вы хотите применить функцию или метод к элементам списка, разумно использовать нотацию list comprehension вместо цикла for, если вы хотите получить список в конце.
- Похожие статьи:Использование нотации понимания списков в Python
Здесь мы применяем функцию strip() к списку, полученному в результате разбиения строки с помощью функции split(). Лишние пробелы в строке, разделенной запятыми и содержащей пробелы, могут быть удалены для создания списка.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three']
Когда это применяется к пустой строке, можно получить список с единственной пустой строкой в качестве элемента.
s = '' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # [''] # 1
Если вы хотите получить пустой список для пустой строки, вы можете задать условную ветвь в нотации понимания списка.
s = '' l = [x.strip() for x in s.split(',') if not s == ''] print(l) print(len(l)) # [] # 0
'one, , three'
Кроме того, если элемент, разделенный запятой, отсутствует, как описано выше, первый метод перечислит его как элемент пустой строки.
s = 'one, , three' l = [x.strip() for x in s.split(',')] print(l) print(len(l)) # ['one', '', 'three'] # 3
Если вы хотите игнорировать недостающие части, вы можете задать условную ветвь в нотации понимания списка.
s = 'one, ,three' l = [x.strip() for x in s.split(',') if not x.strip() == ''] print(l) print(len(l)) # ['one', 'three'] # 2
Получить в виде списка чисел
Если вы хотите получить строку чисел, разделенных запятыми, в виде списка чисел, а не строки, примените int() или float() для преобразования строки в число в нотации list comprehension.
s = '1, 2, 3, 4' l = [x.strip() for x in s.split(',')] print(l) print(type(l[0])) # ['1', '2', '3', '4'] # <class 'str'> s = '1, 2, 3, 4' l = [int(x.strip()) for x in s.split(',')] print(l) print(type(l[0])) # [1, 2, 3, 4] # <class 'int'>
join(): Объедините список и получите его в виде строки
В противоположном случае, если вы хотите объединить список и получить строки, разделенные определенным разделителем, используйте метод join().
Легко ошибиться, но обратите внимание, что join() — это строковый метод, а не метод списка. Список указывается в качестве аргумента.
s = 'one, two, three' l = [x.strip() for x in s.split(',')] print(l) # ['one', 'two', 'three'] print(','.join(l)) # one,two,three print('::'.join(l)) # one::two::three
Вы можете записать его в одной строке следующим образом.
s = 'one, two, three' s_new = '-'.join([x.strip() for x in s.split(',')]) print(s_new) # one-two-three
Если вы просто хотите изменить фиксированный разделитель, проще заменить его с помощью метода replace().
s = 'one,two,three' s_new = s.replace(',', '+') print(s_new) # one+two+three