如果在列表中找到特殊字符,则将前一个字符合并在一起

时间:2015-10-07 16:39:51

标签: python list

如果找到特殊字符或多个特殊字符,如何将列表中的先前字符合并在一起。

例如

L = [ "a", "b","c", "-", "a", "b", "c", "-" "a", "b", "c", "-"]

L = [ "abc", "-", "abc", "-" "abc", "-"] 

4 个答案:

答案 0 :(得分:3)

import itertools

L = [ "a", "b","c", "-", "a", "b", "c", "-", "a", "b", "c", "-"]
result = []
for is_special, v in itertools.groupby(L, lambda c: c=="-"):
    if is_special:
        result.extend(v)
    else:
        result.append("".join(v))

print result

c=="-"替换为您用来判断"特殊字符"的任何标准。结果:

['abc', '-', 'abc', '-', 'abc', '-']

答案 1 :(得分:0)

对于给定的字符串和所需的输出,您可以尝试

>>> JoinedL = ''.join(L)                  # Join the string
>>> import re
>>> output = re.split('(-)', JoinedL)     # Split the string based on '-'
>>> output.remove('')                     # Remove the '' at the end
>>> output
['abc', '-', 'abc', '-', 'abc', '-']

对凯文来说,例如

>>> L = ["a", "b", "-", "-", "c", "d", "-", "e", "f"]
>>> JoinedL = ''.join(L)
>>> output = re.split('(-)', JoinedL)
>>> output.remove('')
>>> output
['ab', '-', '-', 'cd', '-', 'ef']

算法是加入列表,然后根据-进行拆分。但是我们在这里使用re因为我们需要保留分隔符。

指向文档的链接 -

答案 2 :(得分:0)

更简单:

values = ['a', 'b', 'c', '-', 'a', 'b', 'c', '-', 'a', 'b', 'c', '-']
L = [x for x in "".join(values).replace('-','*-*').split('*') if x]

答案 3 :(得分:0)

如果您只使用'-'之前的字母组合,则可以使用

L = ["a", "b", "-", "-", "c", "d", "-", "e", "f"]
result = []
s = ''
for i in L:
    if i == '-':
        if s:
            result.append(s)
        result.append(i)
        s = ''
    else:
        s += i

if s:
    result += list(s)

print result

['ab', '-', '-', 'cd', '-', 'e', 'f']
['abc', '-', 'abc', '-', 'abc', '-']