"/1/2/3/".split("/")

4

天气太热了,我可能有点傻。

>>> "/1/2/3/".split("/")
['', '1', '2', '3','']

为什么开头和结尾是空元素?

编辑:谢谢大家,我认为这是因为热引起的脑衰竭。虽然文档并不是很清晰,来自http://docs.python.org/library/stdtypes.html

"Return a list of the words in the string, using sep as the delimiter string"

第一个斜杠前或最后一个斜杠后是否有单词?


7
因为在1前面和3后面有一个斜杠。 - John Warlow
4
去除空字符串的改动(如果你的字符串中恰好包含 //,也会将其从中间删除):[x for x in '/1/2/3/'.split('/') if x != ''] - Brian
@Brian,太好了!应该把它发布为答案。 - ceejayoz
1
@ceejayoz:发布一个使用if x <> ''的解决方案?拜托不要。 - SilentGhost
7个回答

18

与之比较:

"1/2/3".split("/")

空元素仍然是元素。

您可以使用strip('/')从字符串的开头/结尾剪切分隔符。


2
总结一下:"/1/2/3/".strip("/").split("/")。最简单的修复方法。 - bradlis7

4
正如JLWarlow所说,该字符串中有一个多余的'/'。以下是另一个示例:

像这样:

>>> "//2//3".split('/')
['', '', '2', '', '3']

2

斜杠是分隔符,因此在第一个和最后一个之前都有空元素。


只是添加一点:也就是说,每个分隔符都有前面和后面的内容,包括第一个和最后一个分隔符。 - Diego Pereyra

1

你正在使用/进行分割。你有4个/,因此返回的列表将有5个元素。


1
除了它们是正斜杠! - asmeurer

0
[x for x in "//1///2/3///".split("/") if x != ""]

错误,现在我看到Brian在评论中发布了几乎完全相同的解决方案。 - mykhal
2
你可以使用 if x 进行检查。 - SilentGhost

0

这正是我所期望的,但我们都不同 :)

你会从以下代码得到什么结果: "1,,2,3".split(",") ?


0

您可以使用strip()函数来去除前导和尾随的空格... 然后像以前一样调用split()函数。


除了 Python 之外,它应该是 strip(),而不是 trim() :) - bradlis7
该死,我甚至知道那个。我永远不会知道我是怎么打错的。马上修复。 - Platinum Azure

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接