我想基于sep
分割字符串,其中标记的原始位置很重要。
在the official documentation of str.split()
中,没有提到维护令牌的顺序,因为它们在分割之前出现在原始文本中。是否保证str.split
保留此订单?
有一个类似:A > B > C
的文字,如何获得保证输出,例如:[(1, A), (2, B), (3, C)]
?
答案 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)
迭代应该保持秩序 - 不会有太多意义......