如果找到特殊字符或多个特殊字符,如何将列表中的先前字符合并在一起。
例如
L = [ "a", "b","c", "-", "a", "b", "c", "-" "a", "b", "c", "-"]
到
L = [ "abc", "-", "abc", "-" "abc", "-"]
答案 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', '-']