Как разбить строку на второе подчеркивании в Python, так что я получаю что-то вроде этого имениPython разбить строку на подчеркивании
= this_is_my_name_and_its_cool
раскола имени, так что я получаю эту ["this_is", "my_name_and_its_cool"]
Как разбить строку на второе подчеркивании в Python, так что я получаю что-то вроде этого имениPython разбить строку на подчеркивании
= this_is_my_name_and_its_cool
раскола имени, так что я получаю эту ["this_is", "my_name_and_its_cool"]
Предполагая, что у вас есть строка с несколькими экземплярами одного и того же разделителя и вы хотите разбить на n-й разделитель, игнорируя остальные.
Вот решение, используя только split
и join
, без сложных регулярных выражений. Это может быть немного легче адаптировать к другим разделителям и, в частности, к другим значениям n
.
def split_at(s, c, n):
words = s.split(c)
return c.join(words[:n]), c.join(words[n:])
Пример:
>>> split_at('this_is_my_name_and_its_cool', '_', 2)
('this_is', 'my_name_and_its_cool')
Вот что я в итоге использовал.Я пишу инструменты для программного обеспечения Maya 3D, и эта функция теперь находится в общем утилите, где я могу использовать его во всех моих сценариях. Спасибо. – Willy
Я думаю, вы пытаетесь разделить строку на основе второго подчеркивания. Если да, то вы использовали функцию findall
.
>>> import re
>>> s = "this_is_my_name_and_its_cool"
>>> re.findall(r'^[^_]*_[^_]*|[^_].*$', s)
['this_is', 'my_name_and_its_cool']
>>> [i for i in re.findall(r'^[^_]*_[^_]*|(?!_).*$', s) if i]
['this_is', 'my_name_and_its_cool']
Сладкое спасибо: D – Willy
@Willy отредактируйте свой вопрос, чтобы сказать, что вы пытаетесь разбить вход на основе второго символа '_'. –
@Willy [Примите любой или ответы отсюда, которые вам больше всего помогли.] (Http://stackoverflow.com/help/accepted-answer) –
print re.split(r"(^[^_]+_[^_]+)_","this_is_my_name_and_its_cool")
Попробуйте это.
следующее утверждение разделится имя в список строк
a=name.split("_")
вы можете комбинировать любые строки, которые вы хотите использовать соединение, в этом случае, используя первый два слова
b="_".join(a[:2])
c="_",join(a[2:])
, может быть, вы можете написать небольшую функцию, которая принимает в качестве аргумента число слов (п), после чего вы хотите разделить
def func(name, n):
a=name.split("_")
b="_".join(a[:n])
c="_".join(a[n:])
return [b,c]
С 'n' и' n + 1' вы теряете слово (верхняя граница является эксклюзивной) –
Спасибо tobias_k, я изменил его. – akrishnamo
Вот быстрый & грязный способ сделать это:
s = 'this_is_my_name_and_its_cool'
i = s.find('_'); i = s.find('_', i+1)
print [s[:i], s[i+1:]]
выход
['this_is', 'my_name_and_its_cool']
Вы могли бы обобщить этот подход разделить на п-м сепараторе, поставив find()
в цикл.
Это не 'split' под знаком подчеркивания. –
Почему вы разделяете только на второй знак подчеркивания? –
Итак, как вы определили, что раскол будет на * втором * подчеркивании? Или вы хотите разбить на пятом месте с конца? –