写入 该 功能 分裂(线,分隔) 那 特定 一些 串 线 和 一个 分隔符 字符 DELIM 它 拆分 该 线 上 一切 出现 的 该 分隔符 和 回报 该 分离 部分 如 一个 名单 的 字符串 (不 该 分隔符)。
答案 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 []