我有一个字符串如下:
s = 'hello\n this is\n a forum\n'
我正在使用正则表达式来获取每个字符的每一次/双次出现。我想生成一个列表li = [ 'h','e','ll','o','\n','t','h'....]
我用过
pattern = re.compile(r'(.)\1?' , re.IGNORECASE)
newList = [m.group() for m in pattern.finditer(s)]
print newList
但这给了我newList= [ 'h','e','ll','o','t','h'....]
,在这里我无法存储'\ n'新行字符。我应该如何更改模式以获取列表中的'\ n'?
答案 0 :(得分:4)
像这样使用re.DOTALL
标志
pattern = re.compile(r'(.)\1?' , re.IGNORECASE | re.DOTALL)
从文档引用,
制作'。'特殊字符匹配任何字符,包括a 新队;没有这个标志,'。'将匹配除换行符之外的任何内容。
我希望itertools.groupby
能够做到这一点
from itertools import groupby
print ["".join(grp) for char, grp in groupby(s)]