Python 3.3:拆分字符串并创建所有组合

Posted

技术标签:

【中文标题】Python 3.3:拆分字符串并创建所有组合【英文标题】:Python 3.3: Split string and create all combinations 【发布时间】:2014-05-19 15:13:00 【问题描述】:

我正在使用 Python 3.3。我有这个字符串:

"Att education is secondary,primary,unknown"

现在我需要拆分最后三个单词(可能有更多或只有一个)并创建所有可能的组合并将其保存到列表中。喜欢这里:

"Att education is secondary"
"Att education is primary"
"Att education is unknown"

最简单的方法是什么?

【问题讨论】:

【参考方案1】:
data = "Att education is secondary,primary,unknown"
first, _, last = data.rpartition(" ")
for item in last.split(","):
    print(" ".format(first, item))

输出

Att education is secondary
Att education is primary
Att education is unknown

如果您想要列表中的字符串,则在列表理解中使用相同的字符串,如下所示

[" ".format(first, item) for item in last.split(",")]

注意:如果逗号分隔值的中间或值本身有空格,这可能不起作用。

【讨论】:

【参考方案2】:
a = "Att education is secondary,primary,unknown"
last = a.rsplit(maxsplit=1)[-1]
chopped = a[:-len(last)]

for x in last.split(','):
    print(''.format(chopped, x))

如果你能保证你的单词用一个空格分隔,这也可以工作(更优雅):

chopped, last = "Att education is secondary,primary,unknown".rsplit(maxsplit=1)
for x in last.split(','):
    print(' '.format(chopped, x))

只要最后一个单词的分隔符不包含空格,就可以正常工作。

输出:

Att education is secondary
Att education is primary
Att education is unknown

【讨论】:

有点低效,你可能想做a.rsplit(" ", 1) 谢谢,您能否解释一下splitrsplit 更好,maxsplit 设置为 1?【参考方案3】:
s="Att education is secondary,primary,unknown".split()

w=s[1]
l=s[-1].split(',')

for adj in l:
    print(' '.join([s[0],w,s[2],adj]))

【讨论】:

以上是关于Python 3.3:拆分字符串并创建所有组合的主要内容,如果未能解决你的问题,请参考以下文章

如何在特定字符处拆分字符串并构建不同的字符串组合[关闭]

R语言之字符串的组合与拆分

Pandas - 出现字符串时拆分数据并创建列

Python 字符串的所有可能组合

python:随机播放字符串中的字符以获取所有可能的字符串组合[重复]

拆分字符串并删除空格 Python