Python在特定列表中拆分特定字符串的方法

Python在特定列表中拆分特定字符串的方法,python,Python,试图得到 x = 'AAA-BBB-CCC-DDD-EEE' 到 有什么好办法吗 我不是在寻找一个非常普遍的规则,我只是想知道你会如何形成上面的y和x。它基本上是一个带分隔符的字母字符串,我希望以增量方式获得所有项目的列表,如示例所示。如果你能得到['AAA'、'AAA-BBB'、'AAA-BBB-CCC'、'AAA-BBB-CCC-DDD'、'AAA-BBB-CCC-DDD-EEE'],这并不重要,因为我可以拆分列表来剪切需要剪切的元素数。我将分两步进行。首先,通过分隔符进行拆分: z =

试图得到

x = 'AAA-BBB-CCC-DDD-EEE'

有什么好办法吗


我不是在寻找一个非常普遍的规则,我只是想知道你会如何形成上面的y和x。它基本上是一个带分隔符的字母字符串,我希望以增量方式获得所有项目的列表,如示例所示。如果你能得到['AAA'、'AAA-BBB'、'AAA-BBB-CCC'、'AAA-BBB-CCC-DDD'、'AAA-BBB-CCC-DDD-EEE'],这并不重要,因为我可以拆分列表来剪切需要剪切的元素数。

我将分两步进行。首先,通过分隔符进行拆分:

z = x.split('-')
然后,将每个项目从/连接到特定长度:

['-'.join(z[:i+1]) for i in range(2,len(z))]
如果不想硬编码2,从中间开始,请使用lenz/2或其他标准:

>>> ['-'.join(z[:i+1]) for i in range(2,len(z))]
['AAA-BBB-CCC', 'AAA-BBB-CCC-DDD', 'AAA-BBB-CCC-DDD-EEE']
>>> ['-'.join(z[:i+1]) for i in range(len(z)/2,len(z))]
['AAA-BBB-CCC', 'AAA-BBB-CCC-DDD', 'AAA-BBB-CCC-DDD-EEE']

拆分,然后再次合并,拾取越来越大的切片:

elems = x.split('-')
['-'.join(elems[:i]) for i in xrange(3, len(elems) + 1)]
这假设您希望第一个零件始终包含3个元素。循环经过3、4和5,将元素切片到那么多元素,并在分隔符上将它们再次连接在一起

演示:


x变成y的规则是什么,它们之间的关系是什么?你自己试过什么了吗?是的,但这是一个丑陋的解决方案,我很难为情地发布它,但它至少能给我们一个线索,让我们知道你认为y应该如何由x构成。目前我们所能做的就是猜测。当x='AAA-BBB-CCC-DDD-EEE-FFF-GGG-HHH'时会发生什么?或者x='AAA'?这里的变量是什么,转换规则,如果不符合规则会发生什么,等等?不必感到尴尬,但是你需要向我们解释分割过程的规则。但是我解释了。我只是问你如何从x中得到y。不知道你还向我要什么尼斯,这就是我要找的。谢谢,我刚刚接受了第一个回答问题的回复,但我感谢你的帮助,谢谢
elems = x.split('-')
['-'.join(elems[:i]) for i in xrange(3, len(elems) + 1)]
>>> x = 'AAA-BBB-CCC-DDD-EEE'
>>> elems = x.split('-')
>>> ['-'.join(elems[:i]) for i in xrange(3, len(elems) + 1)]
['AAA-BBB-CCC', 'AAA-BBB-CCC-DDD', 'AAA-BBB-CCC-DDD-EEE']