Python在下划线处拆分字符串

时间:2014-12-01 11:26:21

标签: python

如何在Python的第二个下划线处拆分字符串,以便我得到类似这样的内容

name = this_is_my_name_and_its_cool

拆分名称,以便我得到["this_is", "my_name_and_its_cool"]

5 个答案:

答案 0 :(得分:1)

假设您有一个包含相同分隔符的多个实例的字符串,并且您希望在第n个分隔符处拆分,而忽略其他分隔符。

这是一个仅使用splitjoin的解决方案,没有复杂的正则表达式。这可能更容易适应其他分隔符,尤其是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')

答案 1 :(得分:0)

我认为你正在尝试基于第二个下划线拆分字符串。如果是,那么您使用了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']

答案 2 :(得分:0)

print re.split(r"(^[^_]+_[^_]+)_","this_is_my_name_and_its_cool")

试试这个。

答案 3 :(得分:0)

以下语句将名称拆分为字符串列表

a=name.split("_")

你可以使用连接组合你想要的任何字符串,在这种情况下使用前两个单词

b="_".join(a[:2])
c="_",join(a[2:])

也许你可以编写一个小函数,将你想要分割的单词数(n)作为参数

def func(name, n):
    a=name.split("_")
    b="_".join(a[:n])
    c="_".join(a[n:])
    return [b,c]

答案 4 :(得分:0)

这是一个快速的&肮脏的方式:

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()置于循环中来概括此方法以在第n个分隔符上进行拆分。