我想在不使用split函数的情况下拆分文本

时间:2011-04-13 04:09:49

标签: python

写入 该 功能 分裂(线,分隔) 那 特定 一些 串 线 和 一个 分隔符 字符 DELIM 它 拆分 该 线 上 一切 出现 的 该 分隔符 和 回报 该 分离 部分 如 一个 名单 的 字符串 (不 该 分隔符)。

5 个答案:

答案 0 :(得分:2)

您的问题有点不清楚,但也有其他选择。您可以在字符串上使用Slice Notation,并使用rfind()函数设置边界,如果您希望更灵活地使用哪个分隔符。

例如:

>>> mystr = "foo,bar,baz,spam"
>>> mystr[:mystr.rfind(',')]
'foo,bar,baz'

答案 1 :(得分:1)

非常模糊,但您可能正在寻找 rsplit 。它允许您控制要从右侧“拆分”的项目数。

string.rsplit(delim,index)

>>> "1,2,3,4".rsplit(",", 1)
['1,2,3', '4']

>>> "1,2,3,4".rsplit(",", 2)
['1,2', '3', '4']

答案 2 :(得分:0)

我不知道为什么你实际上认为split不适合你的目的但是,如果你真的不想使用它,你可以恢复滚动你的自己有能力完成这项工作。

一个好的起点是以下mysplit函数,它只是将key=value类型的字符串分隔为列表`(“key”,“value”):

def mysplit (s):
    pos = s.find ("=")
    if pos == -1:
        return (s,"")
    return (s[:pos],s[pos+1:])

for str in ("key=value","no equals sign"):
    print "[%s] [%s]"%(str, mysplit (str))

测试代码的输出是:

[key=value] [('key', 'value')]
[no equals sign] [('no equals sign', '')]

现在很明显,如果你想拥有split的全部功能,你需要对提供的基本代码进行一些修改。但是,说实话,如果你想要split - 就像功能一样,你应该使用split: - )

答案 3 :(得分:0)

def split(s, delim):
    l,d,r = s.partition(delim)
    return [l]+split(r,delim) if d else [l]

答案 4 :(得分:0)

def spliter(x,delim):
    if type(x)!=type(''):
        raise Exception('The input to split must be a string')
    elif x:
        i,a,li = 0,x[0],[]
        for j,b in enumerate(x):
            if b==delim:
                if a!=delim:  li.append(x[i:j])
                i = j+1
            elif a==delim:
                i = j
            a = b
        if b!=delim:
            li.append(x[i:j+1])
        return li
    else:
        return []