【发布时间】:2013-06-24 23:16:03
【问题描述】:
如果我有一个字符串:
“敏捷的棕狐跳过懒狗!”
我会经常使用 split() 函数来标记字符串。
testString = "The quick brown fox jumps over the lazy dog!"
testTokens = testString.split(" ")
这会给我一个清单:
['The', 'quick', 'brown', 'fox', 'jumps', 'over', 'the', 'lazy', 'dog!']
如果我想删除第一个令牌并保持令牌的 REST 不变,我将执行以下操作以使其成为单线:
newString = " ".join(testTokens.split(' ')[1:]) # "quick brown fox jumps over the lazy dog!"
或者,如果我想要某个范围:
newString = " ".join(testTokens.split(' ')[2:4]) # "brown fox"
newString = " ".join(testTokens.split(' ')[:3]) # "The quick brown"
当然,我可能想在空格以外的地方进行拆分:
testString = "So.long.and.thanks.for.all.the.fish!"
testTokens = testString.split('.')
newString = ".".join(testTokens.split('.')[3:]) # "thanks.for.all.the.fish!"
这是完成此任务的最佳方法吗?或者有没有更高效或者更易读的方式?
【问题讨论】:
-
这对我来说很好。你的问题到底是什么?
-
我认为您在第一个示例之后的所有示例中都不需要
testTokens.split(' ')。testTokens已经是testString.split(" "),所以你只想按原样使用它。 -
如果你在空间上分割,为什么不使用
testString.split()呢?它会将连续的空格作为一个单独的空格处理(尽管我想您可能希望保留连续的空格)。