获取包含新行字符的列表

时间:2014-03-03 04:05:41

标签: python regex

我有一个字符串如下:

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'?

1 个答案:

答案 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)]