Mar*_*aes 11 python string split python-2.7 partition
我想分割一个字符串,其中包含两个单词,如"word1 word2",使用分割和分区,并分别打印(使用for)单词,如:
Partition:
word1
word2
Split:
word1
word2
Run Code Online (Sandbox Code Playgroud)
这是我的代码:
print("Hello World")
name = raw_input("Type your name: ")
train = 1,2
train1 = 1,2
print("Separation with partition: ")
for i in train1:
print name.partition(" ")
print("Separation with split: ")
for i in train1:
print name.split(" ")
Run Code Online (Sandbox Code Playgroud)
发生这种情况:
Separation with partition:
('word1', ' ', 'word2')
('word1', ' ', 'word2')
Separation with split:
['word1', 'word2']
['word1', 'word2']
Run Code Online (Sandbox Code Playgroud)
the*_*eye 24
str.partition
返回三个元素的元组.分区字符串之前的字符串,分区字符串本身和字符串的其余部分.所以,它必须像这样使用
first, middle, rest = name.partition(" ")
print first, rest
Run Code Online (Sandbox Code Playgroud)
要使用str.split
,您可以像这样打印分割的字符串
print name.split(" ")
Run Code Online (Sandbox Code Playgroud)
但是,当你这样调用它时,如果字符串有多个空格字符,你将获得两个以上的元素.例如
name = "word1 word2 word3"
print name.split(" ") # ['word1', 'word2', 'word3']
Run Code Online (Sandbox Code Playgroud)
如果只想拆分一次,可以指定要拆分的次数作为第二个参数,如下所示
name = "word1 word2 word3"
print name.split(" ", 1) # ['word1', 'word2 word3']
Run Code Online (Sandbox Code Playgroud)
但是,如果您尝试基于空白字符进行拆分,则不必通过" "
.你可以干脆做
name = "word1 word2 word3"
print name.split() # ['word1', 'word2', 'word3']
Run Code Online (Sandbox Code Playgroud)
如果要限制分割数量,
name = "word1 word2 word3"
print name.split(None, 1) # ['word1', 'word2 word3']
Run Code Online (Sandbox Code Playgroud)
注意:使用None
in split
或不指定参数,就会发生这种情况
引用拆分文档
如果未指定sep或为None,则应用不同的拆分算法:连续空格的运行被视为单个分隔符,如果字符串具有前导或尾随空格,则结果将在开头或结尾处不包含空字符串.因此,将空字符串或仅由空格组成的字符串拆分为None分隔符将返回[].
所以,你可以像这样改变你的程序
print "Partition:"
first, middle, rest = name.partition(" ")
for current_string in (first, rest):
print current_string
print "Split:"
for current_string in name.split(" "):
print current_string
Run Code Online (Sandbox Code Playgroud)
或者你可以使用这样的str.join
方法
print "Partition:"
first, middle, rest = name.partition(" ")
print "\n".join((first, rest))
print "Split:"
print "\n".join(name.split())
Run Code Online (Sandbox Code Playgroud)
Flo*_*ris 16
像命令一样name.split()
返回一个列表.您可以考虑迭代该列表:
for i in name.split(" "):
print i
Run Code Online (Sandbox Code Playgroud)
因为你写的东西,即
for i in train:
print name.split(" ")
Run Code Online (Sandbox Code Playgroud)
将执行print name.split(" ")
两次命令(一次用于值i=1
,一次用于i=2
).两次它将打印出整个结果:
['word1', 'word2']
['word1', 'word2']
Run Code Online (Sandbox Code Playgroud)
类似的事情发生在partition
- 除了它返回你分裂的元素.所以在这种情况下你可能想做
print name.partition(" ")[0:3:2]
# or
print name.partition(" ")[0::2]
Run Code Online (Sandbox Code Playgroud)
返回元素0
和2
.或者,你可以做到
train = (0, 2,)
for i in train:
print name.partition(" ")[i]
Run Code Online (Sandbox Code Playgroud)
在连续两次通过循环中打印元素0和2.请注意,后一个代码效率更低,因为它计算分区两次.如果你关心,你可以写
train = (0,2,)
part = name.partition(" ")
for i in train:
print part[i]
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
58450 次 |
最近记录: |