Перейти к содержимому

Как разделить массив на символы

  • автор:

Как разбить строку на отдельные символы?

Как её разбить на отдельные символы? Понимаю, что data.split() , но только не понятно, что в split() писать. Заранее спасибо.

Отслеживать
51.4k 87 87 золотых знаков 267 267 серебряных знаков 505 505 бронзовых знаков
задан 12 ноя 2011 в 15:09
1,678 4 4 золотых знака 28 28 серебряных знаков 49 49 бронзовых знаков

10 ответов 10

Сортировка: Сброс на вариант по умолчанию

result = list(data) 

Отслеживать
48.6k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
ответ дан 12 ноя 2011 в 16:23
889 7 7 серебряных знаков 18 18 бронзовых знаков

list() не нужно вызывать, data уже последовательность в Питоне. str это встроенное имя—лучше не использовать его как имя своей переменной.

28 ноя 2016 в 22:04

data уже является последовательностью ( data[i] работает). Ничего вызывать не надо.

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

for char in text: print(char) 

Что можно кратко записать: print(‘\n’.join(text)) . Если нужен именно Питон список, то просто chars = list(text) .

Если вы работаете с текстом, то используйте Unicode. Юникодные строки в Питоне являются неизменямыми последовательностями символов (Unicode code points).

Видимые пользователем буквы (grapheme clusters) могут состоять из нескольких символов, к примеру, ё буква может быть представлена как последовательность двух символов: U+435 U+308 в Unicode— u’\u0435\u0308′ в Питоне:

>>> print(u'\u0435\u0308') ё 

Каждый символ может быть представлен в различных кодировках одним или несколькими байтами, к примеру, букву я (U+044F) можно закодировать в два байта: 11010001 10001111 в utf-8 кодировке:

>>> print(u'\u044f') я >>> u'\u044f'.encode('utf-8') b'\xd1\x8f' # два байта: 209, 143 

Байты/байтовая строка ( bytes тип) это неизменяемая последовательность байт в Питоне.

str тип является bytes в Питоне 2. str является Unicode в Питоне 3.

Кроме того существует понятие code unit (8 бит в utf-8, 16 бит в utf-16). Строки в Javascript можно часто рассматривать как последовательности utf-16 code unit (может иметь значение при переносе функциональности в Питон), к примеру, смайлик �� (U+1F602) символ представлен как два code unit: D83D DE02 в utf-16(BE) кодировке:

>>> print(u'\U0001F602') �� >>> u'\U0001F602'.encode('utf-16be') b'\xd8=\xde\x02' # четыре байта: 216, 61, 222, 2 

То есть, если у вас текст, представленный как str в Питоне 3 (Юникод), то вы можете его рассматривать как различные последовательности в зависимости от задачи:

>>> import regex # $ pip install regex >>> text = 'я �� ё' # 6 code points >>> print(ascii(text)) '\u044f \U0001f602 \u0435\u0308' >>> regex.findall(r'\X', text) # 5 grapheme clusters ['я', ' ', '��', ' ', 'ё'] # 5 user-perceived characters >>> utf16codeunits(text) # 7 utf-16 code units (1103, 32, 55357, 56834, 32, 1077, 776) >>> text.encode('utf-16be') # 14 bytes in utf-16 b'\x04O\x00 \xd8=\xde\x02\x00 \x045\x03\x08' >>> text.encode('utf-8') # 12 bytes in utf-8 b'\xd1\x8f \xf0\x9f\x98\x82 \xd0\xb5\xcc\x88' 

Метод split

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

Синтаксис

строка.split([разделитель], [максимальное количество элементов]);

Пример

Пусть дана некоторая строка с дефисами. Давайте разобьем эту строку в массив по разделителю ‘-‘ :

let str = ‘ab-cd-ef’; let arr = str.split(‘-‘); console.log(arr);

Результат выполнения кода:

Пример

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

let str = ‘ab-cd-ef’; let arr = str.split(‘-‘, 2); console.log(arr);

Результат выполнения кода:

Пример

Давайте каждый символ строки запишем в отдельный элемент массива:

let str = ‘abcde’; let arr = str.split(»); console.log(arr);

Результат выполнения кода:

Пример

Давайте первые 3 символа строки запишем в отдельные элементы массива:

let str = ‘abcde’; let arr = str.split(», 3); console.log(arr);

Результат выполнения кода:

Пример

Давайте с помощью split разобьем строку с числами. Обратите внимание на то, что в результате получится массив строк, а не массив чисел:

let str = ‘12345’; let arr = str.split(»); console.log(arr);

Результат выполнения кода:

Пример . Применение

Давайте перевернем символы строки в обратном порядке. Для этого разобьем строку в массив с помощью split по разделителю » (это разместит каждый символ строки в отдельный элемент массива), перевернем этот массив с помощью reverse и затем сольем перевернутый массив обратно с помощью join :

let str = ‘123456789’; let arr1 = str.split(»); let arr2 = arr1.reverse(); let res = arr2.join(»); console.log(res);

Результат выполнения кода:

Пример . Применение

Упростим решение предыдущей задачи — сольем все команды в цепочку:

let str = ‘123456789’; let res = str.split(»).reverse().join(»); console.log(res);

Результат выполнения кода:

Пример . Применение

Дана строка с цифрами. Найдем сумму цифр из этой строки. Для этого разобьем строку в массив, а затем переберем этот массив и найдем его сумму. Нас ждет подвох: split возвращает строки, поэтому при суммировании преобразуем эти цифры-строки в настоящие числа с помощью Number :

let str = ‘12345’; let arr = str.split(»); let sum = 0; for (let i = 0; i < arr.length; i++) < sum += Number(arr[i]); >console.log(sum);

Результат выполнения кода:

Пример . Применение

Дано число. Давайте запишем каждую цифру этого числа в отдельный элемент массива. Тут есть подвох — split применяется только к строкам, а у нас число. Преобразуем вначале число к строке с помощью String , а затем применим split :

let num = 12345; let str = String(num); let arr = str.split(»); console.log(arr);

Результат выполнения кода:

Смотрите также

  • метод join ,
    который сливает элементы массива в строку
  • метод split ,
    который разбивает строку по регулярке
  • метод reverse ,
    который изменяет порядок элементов в массиве на обратный
  • свойство length ,
    которое позволяет узнать длину строки

Как разделить строку на символы python

Есть несколько способов как этого добиться, я расскажу про самый простой. Это использование встроенной функции list() , для того, чтобы преобразовать строку в список, состоящий из символов.

>>> sentence = 'I Love Hexlet!' >>> list(sentence) ['I', ' ', 'L', 'o', 'v', 'e', ' ', 'H', 'e', 'x', 'l', 'e', 't', '!'] 

split()

split() — метод разбивает строку на массив строк используя для этого заданный разделитель.

Синтаксис

 str.split(separator, limit) 

separator — условие по которому будет разделена строка. В качестве разделителя может выступать строковый литерал или регулярное выражение. Также можно использовать специальные символы, например перевод строки, кавычки или юникод. Параметр является необязательным.

limit — количество элементов, которые должен вернуть метод. Параметр необязательный, если пропустить в массив попадут все подстроки. Если задать, то split() все-равно разделит всю строку по разделителям, но возвратит только указанное количество.

При нахождении разделителя метод удаляет separator и возвращает подстроку.

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

Если при записи split() пропустить separator , то метод вернет массив с одним элементом, который будет содержать всю строку.

Разбить строку по разделителю

 let mySkills = 'Native JavaScript-React-HTML-CSS' mySkills = mySkills.split('-', 2) console.log(mySkills) 

Результатом будет массив с двумя элементами: Native JavaScript и React

Разбить строку на символы

 let myDream = 'Хочу стать frontend разработчиком' let allSymbols = myDream.split('') for (let n = 0; n

Здесь мы разделили строку myDream с помощью split(») , задав в качестве separator пустое значение. Все это записали в allSymbols — теперь там массив, где каждый элемент это символ нашей строки. Далее используя цикл for вывели в console все символы — каждый с новой строки.

Разбить строку используя регулярное выражение

 let topProgramLang = 'JavaScript-Python-Java-C++,PHP,C,C#' topProgramLang = topProgramLang.split(/,|-/) console.log(topProgramLang) 

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

Вывести символы строки в обратном порядке

 let importanceSkills = 'React,TypeScript,CSS,HTML,JavaScript' importanceSkills = importanceSkills.split(',') importanceSkills = importanceSkills.reverse() importanceSkills = importanceSkills.join(', ') console.log(importanceSkills) 

Для того, чтобы решить эту задачу нам понадобятся еще два метода reverse() и join() . Первый перевернет массив, а второй объединит элементы в строку. В итоге получим в console JavaScript, HTML, CSS, TypeScript, React

Сумма элементов массива

 let numForSum = '1,2,5,10,392,19,3,10' numForSum = numForSum.split(',') let sumNum = 0 for (let n = 0; n < numForSum.length; n++) < sumNum += +(numForSum[n]) >console.log(sumNum) 

Выполняя подобные задачи стоит помнить, что метод split() записывает данные в массив в формате строки, поэтому перед тем, как складывать элементы необходимо сначала привести их к числу. Здесь это сделано с помощью + перед выражением. Также можно воспользоваться функцией Number(numForSum[n]) .

Итого

1. Метод split() делит строку по разделителю и записывает все в массив.

2. В получившемся массиве, элементы хранятся в формате текст.

3. В параметрах метода, первым свойством задается разделитель, вторым ограничение на вывод элементов. Оба параметра не обязательны.

Skypro — научим с нуля

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

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