Разное

Java разбиение строки на слова: Разбить строку на слова и символы – Java примеры

Разбиение строки на лексемы | XSLT с примерами кода

Задача

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

Решение

XSLT 1.0

Само решение принадлежит Джени Теннисон (мои лишь комментарии). Каждая лексема возвращается в виде узла, состоящего из элемента token, содержащего текст. Если строка разделителей пуста, то по умолчанию исходная строка разбивается на отдельные символы.

<xsl:template name="tokenize">
    <xsl:param name="string" select="''" />
    <xsl:param name="delimiters" select="' &#x9;&#xA;'" />
    <xsl:choose>
        <!-- Ничего не делать, если строка пуста -->
        <xsl:when test="not($string)" />
        <!-- Если разделителей нет, строка разбивается на отдельные символы. -->
        <xsl:when test="not($delimiters)">
            <xsl:call-template name="_tokenize-characters">
                <xsl:with-param name="string" select="$string" />
            </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
            <xsl:call-template name="_tokenize-delimiters">
                <xsl:with-param name="string" select="$string" />
                <xsl:with-param name="delimiters" select="$delimiters" />
            </xsl:call-template>
        </xsl:otherwise>
    </xsl:choose>
</xsl:template>
<xsl:template name="_tokenize-characters">
    <xsl:param name="string" />
    <xsl:if test="$string">
        <token><xsl:value-of select="substring($string, 1, 1)" /></token>
        <xsl:call-template name="_tokenize-characters">
            <xsl:with-param name="string" select="substring($string, 2)" />
        </xsl:call-template>
    </xsl:if>
</xsl:template>
<xsl:template name="_tokenize-delimiters">
    <xsl:param name="string" />
    <xsl:param name="delimiters" />
    <xsl:param name="last-delimit"/>
    <!-- Извлечь разделитель -->
    <xsl:variable name="delimiter" select="substring($delimiters, 1, 1)" />
    <xsl:choose>
        <!-- Если строка разделителей пуста, имеем лексему -->
        <xsl:when test="not($delimiter)">
            <token><xsl:value-of select="$string"/></token>
        </xsl:when>
        <!-- Если строка содержит хотя бы один разделитель, мы должны
        разбить ее -->
        <xsl:when test="contains($string, $delimiter)">
            <!-- Если строка начинается с разделителя, обрабатывать
            предшествующую подстроку не нужно -->
            <xsl:if test="not(starts-with($string, $delimiter))">
                <!-- Обрабатываем часть, предшествующую текущему разделителю, -->
                <!-- пробуя следующий разделитель.
Если следующего нет, то первая проверка в этом шаблоне выделяет лексему --> <xsl:call-template name="_tokenize-delimiters"> <xsl:with-param name="string" select="substring-before($string, $delimiter)" /> <xsl:with-param name="delimiters" select="substring($delimiters, 2)" /> </xsl:call-template> </xsl:if> <!-- Обрабатываем часть, следующую за разделителем, применяя текущий разделитель --> <xsl:call-template name="_tokenize-delimiters"> <xsl:with-param name="string" select="substring-after($string, $delimiter)" /> <xsl:with-param name="delimiters" select="$delimiters" /> </xsl:call-template> </xsl:when> <xsl:otherwise> <!-- Текущий разделитель не встречается, поэтому переходим к следующему --> <xsl:call-template name="_tokenize-delimiters"> <xsl:with-param name="string" select="$string" /> <xsl:with-param name="delimiters" select="substring($delimiters, 2)" /> </xsl:call-template> </xsl:otherwise> </xsl:choose> </xsl:template>

XSLT 2.

0

Воспользуйтесь встроенной функцией tokenize().

Обсуждение

Выделение лексем – типичная задача обработки текста. В языках, где есть развитый аппарат регулярных выражений, она решается тривиально. В этом отношении такие языки, как Perl, Python, JavaScript и Tcl пока превосходят XSLT. Однако, как показано в этом рецепте, разбиение на лексемы можно выполнить, даже не выходя за пределы чистого XSLT. Если вы готовы прибегнуть к расширениям, то можете реализовать низкоуровневые операции со строками на каком-нибудь другом языке.

Если же вам больше нравится подход XSLT, но ваш процессор не оптимизирует хвостовую рекурсию, то в шаблоне _tokenize-characters

можно воспользоваться алгоритмом «разделяй и властвуй»:

<xsl:template name="_tokenize-characters">
  <xsl:param name="string" />
  <xsl:param name="len" select="string-length($string)" />
  <xsl:choose>
    <xsl:when test="$len = 1">
      <token>
        <xsl:value-of select="$string" />
      </token>
    </xsl:when>
    <xsl:otherwise>
      <xsl:call-template name="_tokenize-characters">
        <xsl:with-param
          name="string"
          select="substring($string, 1, floor($len div 2))"
        />
        <xsl:with-param
          name="len"
          select="floor($len div 2)"
        />
      </xsl:call-template>
      <xsl:call-template name="_tokenize-characters">
        <xsl:with-param
          name="string"
          select="substring($string, floor($len div 2) + 1)"
        />
        <xsl:with-param
          name="len"
          select="ceiling($len div 2)"
        />
      </xsl:call-template>
    </xsl:otherwise>
  </xsl:choose>
</xsl:template>

В языке Java также имеется готовый класс для разбиения строки на лексемы (java. util.StringTokenizer).

Как разделить строку в Python методом str.split(), примеры с пробелом, запятой и регулярными выражениями

Строки — отличный инструмент в руках Python-разработчиков. В Python строка —
это последовательность символов в кавычках. Она может включать числа, буквы и
символы. С помощью Python строку можно разделить на список подстрок по
определенному разделителю. Это делается с помощью метода split.

В этом материале разберем особенности его использования.

Что делает split в Python?

Функция split сканирует всю строку и разделяет ее в случае нахождения разделителя.
В строке должен быть как минимум один разделитель. Им может выступать в том
числе и символ пробела. Пробел — разделитель по умолчанию.

Если параметр на задать, то разделение будет выполнено именно по символу
пробела.

Синтаксис функции следующий:

string.split(separator*, maxsplit*)

Параметр separator — необязательный, но он позволяет задать разделитель
вручную.

Параметр maxsplit определяет максимальное количество разделений. Значение по
умолчанию — -1, будут выполнены все разделения.

Как разделить строку в Python

Метод .split() разделяет основную строку по разделителю и возвращает список строк.

Копировать Скопировано Use a different Browser

my_st = "Пример строки Python"
print(my_st.split())

В примере выше была объявлена строка my_st. Она помещена в одинарные кавычки. Функция .split() разделяет ее на список таких строк:

['Пример', 'строки', 'Python']

Вывод содержит список подстрок.

Еще один пример разбиения строки:

Копировать Скопировано Use a different Browser

my_st = "синий,оранжевый,красный"
print(my_st.split(","))

В приведенном выше примере мы создали строку my_st с 3 подстроками. В этом случае именно запятая выступит параметром разделения в функции.

Вывод будет следующий:

['синий', 'оранжевый', 'красный']

Примеры разделения строки в Python

Разделение сроки по пробелу

Если не передать параметр разделителя, то .split() выполнит разделение по пробелу.

Копировать Скопировано Use a different Browser

my_st = "Пример строки Python"
print(my_st.split())

Код вернет: ['Пример', 'строки', 'Python'].

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

Разделение строки по запятой

Разделителем может выступать запятая (","). Это вернет список строк, которые
изначально были окружены запятыми.

Копировать Скопировано Use a different Browser

my_st = "Например, строка Python"
print(my_st.split(","))

Вывод: ['Например', ' строка Python'].

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

Разделение строк по нескольким разделителям

В Python можно использовать даже несколько разделителей. Для этого просто требуется передать несколько символов в качестве разделителей функции split.

Возьмем в качестве примера ситуацию, где разделителями выступают одновременно : и ,. Задействуем функцию re.split().

Копировать Скопировано Use a different Browser

import re
my_st = "Я\nучу; язык,программирования\nPython"
print(re.split(";|,|\n", my_st))

Вывод:

['Я', 'учу', ' язык', 'программирования', 'Python']

Здесь мы используем модуль re и функции регулярных выражений. Переменной my_st была присвоена строка с несколькими разделителями, включая «\n», «;» и «,». А функция re.split() вызывается для этой строки с перечисленными выше разделителями.

Вывод — список подстрок, разделенных на основе оригинальной строки.

Как работает параметр maxsplit в функции split?

Этот параметр помогает задать максимальное число разделений. Разделить стоку можно, передав значение этого параметра. Например, если разделителем выступает символ пробела, а значение maxsplit1,
то строка будет разделена максимум на 2 подстроки.

Копировать Скопировано Use a different Browser

languages = "Python,Java,Perl,PHP,Swift"
print(languages.split(",",1))

В строке languages хранится строка с перечислением разных языков. Функция split принимает запятую в качестве разделителя и значение 1 для параметра maxsplit. Это значит, что разделение будет выполнено только один раз.


['Python', 'Java,Perl,PHP,Swift']

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

maxplit равно 2.

Копировать Скопировано Use a different Browser

languages = "Python,Java,Perl,PHP,Swift"
print(languages. split(",",2))
['Python', 'Java', 'Perl,PHP,Swift']

Как разделить строку посередине

Функция .split() не может разбить строку на две равных части.
Однако для этого можно использовать срезы (оператор :) и функцию len().

Копировать Скопировано Use a different Browser

languages = "Python,Java,Perl,PHP,Swift"
mean_index = len(languages) // 2
print(f"Первая половина: {languages[:mean_index]}")
print(f"Вторая половина: {languages[mean_index:]}")

Вывод:

Первая половина: Python,Java,P
Вторая половина: erl,PHP,Swift

Значение languages было разбито на две равных части. Для работы был использован оператор целочисленного деления.

Вывод

Вот что вы узнали:

  • Функция split разбивает строку на подстроки по разделителю.
  • Параметр maxsplit позволяет указать максимально количество разделений.
  • Если разделитель не задать, то по умолчанию будет выбрано значение пробела.
  • Срезы используются для деления строк на равные части.

Python 3 Примечания: разделение и объединение

Python 3 Примечания

[ ГЛАВНАЯ | ЛИНГ 1330/2330]

Разделение и объединение строк

<<Предыдущее примечание           Следующее примечание >>

На этой странице: .split(), .join() и list().

Разделение предложения на слова: .split()

Ниже мэрия представляет собой одну строку. Несмотря на то, что это предложение, слова не представлены как дискретные единицы. Для этого вам нужен другой тип данных: список строк, где каждая строка соответствует слову. .split() — это метод для использования:
 
>>> mary = 'У Мэри был ягненок'
>>> mary.split()
['У Мэри был маленький ягненок']
 
. split() разбивает mary на whitespce, и возвращаемый результат представляет собой список слов в mary. Этот список содержит 5 элементов, как показывает функция len(). len() для mary, напротив, возвращает количество символов в строке (включая пробелы).
 
>>> mwords = mary.split()
>>> слова
['У Мэри был маленький ягненок']
>>> len(mwords) # количество элементов в mwords
5
>>> len(mary) # количество символов
22
 
К пробельным символам относятся, среди прочего, пробел ‘ ‘, символ новой строки ‘\n’ и табуляция ‘\t’. .split() разделяет любую комбинированную последовательность этих символов:
 
>>> chom = ' бесцветный зеленый \n\tideas\n' # ' ', '\n', '\t' сгруппированы
>>> печатать(чом)
 бесцветный зеленый
идеи
 
>>> чом.split()
['бесцветный', 'зеленый', 'идеи']
 

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

Указав необязательный параметр, . split(‘x’) можно использовать для разделения строки на определенную подстроку ‘x’. Без указания ‘x’ .split() просто разбивается на все пробелы, как показано выше.
 
>>> mary = 'У Мэри был ягненок'
>>> mary.split('a') # разбивается на 'a'
['M', 'ry h', 'd', 'маленький l', 'mb']
>>> hi = 'Здравствуй, мама,\nЗдравствуй, отец.'
>>> распечатать (привет)
Привет мама,
Привет папа.
>>> hi.split() # параметр не указан: разбиение по пробелам
['Здравствуйте', 'мама', 'Здравствуйте', 'отец']
>>> hi.split('\n') # разделяется только на '\n'
['Здравствуй, мама', 'Привет, отец.']
 

Строка в список символов: list()

Но что, если вы хотите разбить строку на список символов? В Python символы — это просто строки длины 1. Функция list() превращает строку в список отдельных букв:
 
>>> список('привет мир')
['Привет, мир']
 
В более общем смысле list() — это встроенная функция, которая превращает объект данных Python в список. Когда задается строковый тип, возвращается список символов в нем. Когда заданы другие типы данных, особенности различаются, но возвращаемый тип всегда является списком. Подробнее см. в этом руководстве.

Присоединение к списку строк: .join()

Если у вас есть список слов, как вы соедините их в одну строку? .join() — это используемый метод. Вызывается по строке-разделителю ‘x’, ‘x’.join(y) объединяет каждый элемент в списке y, разделенный ‘x’. Ниже слова в mwords соединяются обратно в строку предложения с пробелом между ними:
 
>>> слова
['У Мэри был маленький ягненок']
>>> ' '.join(mwords)
'У Мэри был маленький ягненок'
 
Соединение может быть выполнено на любой строке разделителя. Ниже используются «—» и символ табуляции «\t».
 
>>> '--'. join(mwords)
'У Мэри был маленький ягненок'
>>> '\t'.join(mwords)
'Мэри\тад\та\тлитл\тлэмб'
>>> print('\t'.join(mwords))
У Мэри был маленький ягненок
 
Метод также может быть вызван для пустой строки » в качестве разделителя. Эффект заключается в том, что элементы в списке соединяются вместе, и между ними ничего нет. Ниже список символов снова объединяется в исходную строку:
 
>>> привет = 'привет, мир'
>>> Hichars = список(привет)
>>> Хичары
['Привет, мир']
>>> ''.join(hichars)
'Привет, мир'
 

Разделить строку — онлайн-инструменты для работы со строками

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

Просмотр и редактирование строк

Быстрое редактирование строки в редакторе на основе браузера.

Заменить несколько строк

Заменить набор строк новым набором.

Title-case a String

Преобразование строки в заголовок с правильным регистром.

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

Преобразовать первую букву каждого слова в строке в верхний регистр.

Выровнять строку

Растянуть строку и выровнять ее по левому и правому краям.

Форматирование многострочной строки

Форматирование и выравнивание многострочной строки.

Количество букв в строке

Найдите количество букв в строке.

Количество слов в строке

Найдите количество слов в строке.

Количество строк в строке

Найдите количество строк в многострочной строке.

Количество абзацев в строке

Найдите количество абзацев в многострочной строке.

Сортировка слов в строке

Сортировка всех слов в строке в алфавитном порядке.

Сортировка числовой строки

Сортировка строки, содержащей только числа.

Обратный порядок слов в строке

Обратный порядок всех слов в строке.

Обратный порядок предложений в строке

Обратный порядок всех предложений в строке.

Частотный анализ строк

Поиск наиболее часто встречающихся букв, слов и фраз в строке.

Создать мнемонику строки

Создать мнемонику для слов в строке.

Создать анаграмму из строки

Переставить буквы в строке и создать новую строку.

Номер многострочной строки

Добавление номеров строк к многострочной строке.

Обернуть строку

Обернуть строку до заданной длины строки.

Разделить строку на части

Разделить строку на части определенной длины.

Разделить строку на слоги

Найти слоги в строке.

Перемешать слова в строке

Перетасовать порядок всех слов в строке.

Извлечение электронных писем из строки

Поиск и извлечение всех адресов электронной почты из строки.

Извлечение URL-адресов из строки

Найти и извлечь все веб-адреса из строки.

Сделать нить зигзагообразной

Сделать нить зигзагообразной.

Обвести веревку

Закрутить веревку по кругу.

Сделать нить квадратной

Сделать нить квадратной или прямоугольной.

Скручивание нити

Скручивание нити по спирали.

Заблокировать строку

Подогнать строку к блоку размером N на M.

Извлечение чисел из строки

Поиск и извлечение всех чисел из строки.

Вычислить статистику строк

Анализировать сложность строки, включая энтропию.

Преобразование строки в Punycode

Кодирование строки в punycode.

Преобразование Punycode в строку

Декодирование строки из punycode.

QP-кодировать строку

Преобразовать строку в кодировку для печати в кавычках.

QP-декодировать строку

Преобразовать закодированные в кавычках данные в строку.

Base32-кодировать строку

Кодировать строку в base32.

Base32-декодировать строку

Декодировать строку из base32.

Base45-кодировать строку

Кодировать строку в base45.

Base45-декодировать строку

Декодировать строку из base45.

Base58-кодировать строку

Кодировать строку в base58.

Base58-decode a String

Декодировать строку из base58.

Base85-кодировать строку

Кодировать строку в Ascii85.

Base85-декодировать строку

Декодировать строку из Ascii85.

UTF8-кодировать строку

Кодировать строку в UTF8.

UTF8-декодирование строки

Декодирование строки из UTF8.

UTF16-кодировать строку

Кодировать строку в UTF16.

UTF16-декодировать строку

Декодировать строку из UTF16.

UTF32-кодировать строку

Кодировать строку в UTF32.

UTF32-декодирование строки

Декодирование строки из UTF32.

IDN-кодировать строку

Кодировать строку в IDN.

IDN-decode a String

Декодировать строку из кодировки IDN.

Uuencode a String

Преобразование строки в кодировку Unix-to-Unix.

Uudecode a String

Преобразование данных Unix-to-Unix в строку.

Xxencode a String

Преобразование строки в Xxencoding.

Xxdecode a String

Преобразовать строку, закодированную Xx, в обычную строку.

HTML-стрип a String

Удалить все теги HTML из строки.

Удалить символы ударения

Удалить все диакритические знаки из строки.

Добавить символы ударения

Произвольное добавление символов ударения к буквам в строке.

Удалить гласные строки

Удалить гласные буквы из строки.

Добавить повторяющиеся пробелы

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

Удалить повторяющиеся пробелы

Нормализация интервалов между строками и удаление всех повторяющихся пробелов.

Diff Two Strings

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

Строка Расстояние Левенштейна

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

Расстояние Хэмминга струны

Рассчитать расстояние Хэмминга между двумя струнами.

Найти LCS двух строк

Найти самую длинную общую подпоследовательность двух строк.

Переписать строку

Крошечная система перезаписи строки.

Уменьшить буквенный алфавит

Ограничьте количество букв алфавита, используемых в строке.

Создание строки Zalgo

Преобразование строки в беспорядок Unicode.

Генерировать опечатки строк

Создать список всех возможных опечаток строк.

Зеркальное отображение строки

Создание зеркальной копии строки.

Генерировать триграммы

Генерировать все 3-граммы строки.

Сгенерировать все N-граммы

Сгенерировать все Nграммы строки.

Генерировать N-пропустить-M-грамм

Сгенерировать n-skip-m-грамм строки.

Токенизировать строку

Создать список токенов из строки.

Лемматизировать строку

Лемматизировать все слова в строке.

Основа строки

Сделать основу всех слов в строке.

Grep a String

Извлечение фрагментов, соответствующих регулярному выражению в строке.

Заголовок строки

Разбить строку на фрагменты и извлечь начальные части.

Конец строки

Разбить строку на фрагменты и извлечь конечные части.

Преобразование строки в гиперстроку

Создание гиперстроки из строки.

Преобразование гиперстроки в строку

Создание обычной строки из гиперстроки.

Преобразование строки в массив

Создание массива символов из строки.

Преобразование строки в целые числа

Разделение строки на символы и возврат их целочисленных значений.

Заменить буквы цифрами

Заменить символы в строке цифрами.

Заключить строку в кавычки

Заключить строку в пару кавычек.

Раскрыть строку из кавычек

Удалить кавычки вокруг строки.

Исправить цитирование строк

Исправить строки с неправильными кавычками (добавить/удалить отсутствующие кавычки).

Сдвиг строки

Сдвиг символов в строке влево или вправо.

Раскрась нить

Создайте цветную нитку.

Слагифицировать строку

Создать оптимизированный для SEO URL-адрес из строки.

Создание ошибок в строке

Замена случайных символов в строке и создание ошибок.

Поиск ошибок в строке

Запустите проверку орфографии и найдите ошибки в строке.

Смешать две строки

Чередовать две строки посимвольно.

Повторять символы строки

Повторять символы в строке несколько раз.

Создать строку LCD

Нарисуйте строку на ЖК-экране.

Создать короткую строку

Создать строку, в которой не слишком много символов.

Создать длинную строку

Создать строку, содержащую много символов.

Создание строк-близнецов

Создание двух строк со свойством близнеца.

Создать триплетные строки

Создать три строки со свойством триплета.

Создать облако строк

Создать облако слов из всех слов в строке.

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

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