Так что с этой строки:Как разбить строку с помощью [] в Python
"Имя [ID]"
мне это нужно:
"Идентификатор"
Я str.split ('[]'), но это не сработало. Требуется ли только один разделитель?
Так что с этой строки:Как разбить строку с помощью [] в Python
"Имя [ID]"
мне это нужно:
"Идентификатор"
Я str.split ('[]'), но это не сработало. Требуется ли только один разделитель?
Используйте регулярное выражение:
import re
s = "name[id]"
re.find(r"\[(.*?)\]", s).group(1) # = 'id'
str.split()
принимает строку, на которой расщеплять ввод. Например:
"i,split,on commas".split(',') # = ['i', 'split', 'on commas']
Модуль re
также позволяет разделить регулярное выражение, которое может быть очень полезно, и я думаю, что это то, что вы имели в виду сделать.
import re
s = "name[id]"
# split by either a '[' or a ']'
re.split('\[|\]', s) # = ['name', 'id', '']
Либо
"name[id]".split('[')[1][:-1] == "id"
или
"name[id]".split('[')[1].split(']')[0] == "id"
или
re.search(r'\[(.*?)\]',"name[id]").group(1) == "id"
или
re.split(r'[\[\]]',"name[id]")[1] == "id"
str.split использует весь параметр для разделения строки. Попытка:
str.split("[")[1].split("]")[0]
Wrong - str.split принимает строку любой длины – Triptych
Я думаю, что Тайсон говорил, что str.split ("[]") будет разделяться на весь параметр, т. Е. "[]", А не "[" "]" индивидуально. Ничего плохого в его ответе. – Alinium
«str» - это ключевое слово в Python, поэтому вам следует избегать использования его в качестве имени переменной в примерах! – phobie
Да, разделитель - это весь аргумент строки, переданный в split. Таким образом, ваш пример разделил бы строку типа 'name [] id []'.
Попробуйте, напр. что-то вроде:
'name[id]'.split('[', 1)[-1].split(']', 1)[0]
'name[id]'.split('[', 1)[-1].rstrip(']')
Я не являюсь поклонником регулярного выражения, но в таких случаях, как он часто обеспечивает лучшее решение.
Триптих уже рекомендовал это, но я хотел бы отметить, что P <> Назначение группы может быть использовано для назначения спички к словарю ключу:
>>> m = re.match(r'.*\[(?P<id>\w+)\]', 'name[id]')
>>> result_dict = m.groupdict()
>>> result_dict
{'id': 'id'}
>>>
, Вам не нужно регулярные выражения для этого. Функция .index() и нарезка строк будут работать нормально.
Скажем, у нас есть:
>>> s = 'name[id]'
Тогда:
>>> s[s.index('[')+1:s.index(']')]
'id'
Для меня это легко читается: "начать один символ после [и закончить до того, как]".
def between_brackets(text):
return text.partition('[')[2].partition(']')[0]
Это также будет работать, даже если ваша строка не содержит […]
конструкцию, и это предполагает, подразумеваемый ]
в конце в случае у вас есть только [
где-то в строке.
Я новичок в python, и это старый вопрос, но, может быть, это?
str.split('[')[1].strip(']')
Предшествующий уровень техники от bobince и, пожалуйста, не используйте ключевое слово «str» для имен переменных! – phobie
За все время я потратил на SO, это первый вопрос, где я думал, что «Использование регулярных выражений!» вместо «О, хорошо, не используйте регулярное выражение для ЭТОГО!» :) –
По-прежнему нет необходимости в регулярном выражении. Вся эта пунктуация оскорбляет мои глаза! – bobince
Ха-ха - я думал то же самое @Torsten – Triptych