2015-09-27 29 views
0

,比如我有串:蟒蛇2.7 - 如何把字符串转换成一个列表时,分隔符是数字和“\ N”

​​

我想要得到的是:

["hello", "there", "how", "are", "you", "today?"] 

数字代表空格,而\\n是一个新行。 我试过split()这样做,但它只能得到2个论证,而不是更多,所以它不是optinal。

我也发现了这一点:

filter(None, re.split("['1234567890']+", string_to_split)) 

这对于数字工作正常,但不是为'\\n'。 有没有什么办法在一个动作中将数字和'\\n'拆分为字符串?

我不能找出一种方法将它分成两个分离的函数,因为一旦我创建了一个列表,我不能再分割它。

如果有人知道这样做的方式,请帮助我。感谢

+1

只需将空格('\ s')添加到您的正则表达式中(并注意数字只是'\ d')。 – jonrsharpe

+0

这是一个原始字符串还是普通字符串?这会导致'\\ n'或'\ n'。两者都是一个或两个'\'和'n',而不是换行符。 –

+0

@jonrsharpe我不会再工作。 – Kasramvd

回答

1

您需要添加\s\\n到您的正则表达式:

>>> s="hello0there\\nhow3are6you1today?" 
>>> re.split(r'[\d\s\\n]*',s) 
['hello', 'there', 'how', 'are', 'you', 'today?'] 

为了得到分裂骑在你的字符串n的你可以用正面看后面和逻辑或:

>>> re.split(r'[\d\s\\]|(?<=\\)n',s) 

但是,既然它可能会产生一个空字符串,你可以使用列表理解来获取它。

>>> [i for i in re.split(r'[\d\s\\]|(?<=\\)n',s) if i] 
+2

你需要更多的反斜杠(或'r''')! – jonrsharpe

+0

@jonrsharpe是的,谢谢;) – Kasramvd

+0

有没有一种方法可以只用'\ n'分开(不是由一个'n'?因为我在包含字母n的单词列表上运行该单词,并且它也分裂了单词.. @jonrsharpe – Maya

相关问题