Python中的str.split()是否保证返回列表的顺序

时间:2018-05-26 12:59:16

标签: python

我想基于sep分割字符串,其中标记的原始位置很重要。

the official documentation of str.split()中,没有提到维护令牌的顺序,因为它们在分割之前出现在原始文本中。是否保证str.split保留此订单?

有一个类似:A > B > C的文字,如何获得保证输出,例如:[(1, A), (2, B), (3, C)]

2 个答案:

答案 0 :(得分:1)

>>> s = "A>B>C"
>>> lst = s.split(">")
>>> result = zip(range(1, len(lst)+1), lst)
>>> print result
[(1, 'A'), (2, 'B'), (3, 'C')]

答案 1 :(得分:1)

这会导致你的输出 - 单独拆分不会。

k = [(n+1,c) for n,c in enumerate( x.strip() for x in "A > B > C".split(">"))]
print(k)

输出:

[(1, 'A'), (2, 'B'), (3, 'C')]

如果你不信任分裂......明确说明:

t = "A > B > C"
temp = ""
result = []
for c in t:
    if c == ">":
        result.append(temp.rstrip())
        temp=""
    else:
        temp += c

if temp.rstrip():
    result.append(temp.rstrip())

r = [ (n+1,v) for n,v in enumerate(result)]
print(r)

迭代应该保持秩序 - 不会有太多意义......