我希望使用拆分和分区分割带有两个单词的字符串,如“word1 word2”,并分别打印(使用for)单词,如:
Partition:
word1
word2
Split:
word1
word2
这是我的代码:
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(" ")
这种情况正在发生:
Separation with partition:
('word1', ' ', 'word2')
('word1', ' ', 'word2')
Separation with split:
['word1', 'word2']
['word1', 'word2']
答案 0 :(得分:23)
str.partition
返回三个元素的元组。分区字符串之前的字符串,分区字符串本身和字符串的其余部分。所以,它必须像这样使用
first, middle, rest = name.partition(" ")
print first, rest
要使用str.split
,您可以像这样打印分割的字符串
print name.split(" ")
但是,当你这样调用它时,如果字符串有多个空格字符,你将获得两个以上的元素。例如
name = "word1 word2 word3"
print name.split(" ") # ['word1', 'word2', 'word3']
如果您只想拆分一次,可以指定要拆分的次数作为第二个参数,如下所示
name = "word1 word2 word3"
print name.split(" ", 1) # ['word1', 'word2 word3']
但是,如果您尝试根据空白字符进行拆分,则不必传递" "
。你可以简单地做
name = "word1 word2 word3"
print name.split() # ['word1', 'word2', 'word3']
如果您想限制分割数量,
name = "word1 word2 word3"
print name.split(None, 1) # ['word1', 'word2 word3']
注意:在None
中使用split
或指定无参数,就会发生这种情况
如果未指定sep或为None,则使用不同的拆分算法 applied:连续空格的运行被视为单个 分隔符,结果将在开始时不包含空字符串 或者如果字符串具有前导或尾随空格则结束。所以, 拆分空字符串或只包含空格的字符串 使用无分隔符返回[]。
所以,你可以像这样改变你的程序
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
或者你可以使用像这样的str.join
方法
print "Partition:"
first, middle, rest = name.partition(" ")
print "\n".join((first, rest))
print "Split:"
print "\n".join(name.split())
答案 1 :(得分:15)
name.split()
之类的命令会返回一个列表。您可以考虑迭代该列表:
for i in name.split(" "):
print i
因为你写的东西,即
for i in train:
print name.split(" ")
将执行命令print name.split(" ")
两次(一次用于值i=1
,再一次用于i=2
)。两次它将打印出整个结果:
['word1', 'word2']
['word1', 'word2']
partition
发生了类似的事情 - 除了它返回你分裂的元素。所以在这种情况下你可能想要做
print name.partition(" ")[0:3:2]
# or
print name.partition(" ")[0::2]
返回元素0
和2
。或者,您可以
train = (0, 2,)
for i in train:
print name.partition(" ")[i]
通过循环连续两次打印元素0和2。请注意,后一个代码效率更低,因为它计算分区两次。如果你关心,你可以写
train = (0,2,)
part = name.partition(" ")
for i in train:
print part[i]
答案 2 :(得分:0)
string =“迪帕克(Deepak)是一个好人,普雷蒂(Preeti)也不是一个好人。 //首次出现'is'分隔符 print(string.partition('is'))
输出:
(“迪帕克”,“是”,“好人,普雷蒂不是好人。”)
然后, string =“迪帕克(Deepak)是一个好人,普雷蒂(Preeti)也不是一个好人。” //每次出现“ is”分隔符 print(string.partition('is'))
输出:
(“ Deepak”,“是”,“一个好人和Preeti”,“是”,“一个不好的人。”)