2015-09-26 33 views
4

我想使用Python的分区和正则表达式来清理文本字符串。例如:正则表达式的Python分区字符串

testString = 'Tre Bröders Väg 6 2tr' 
sep = '[0-9]tr' 
head,sep,tail = testString.partition(sep) 
head 
>>>'Tre Br\xc3\xb6ders V\xc3\xa4g 6 2tr' 

头仍包含2TR,我想删除。正则表达式我不太好,但不应该[0-9]做到这一点?

我希望从这个例子的输出是

head 
>>> 'Tre Br\xc3\xb6ders V\xc3\xa4g 6 
+0

什么是你期待的输出? –

+0

你甚至没有在这里使用正则表达式,为什么'[0-9]'会诀窍呢? –

+0

添加了我期望的输出 – seb

回答

2

str.partition不支持正则表达式,因此,当你给它像一个字符串 - '[0-9]tr',它试图发现在testString到确切字符串分区基础上,它不使用任何正则表达式。

根据documentation of str.partition -

分割字符串在九月的第一次出现,并返回包含分离器,分离器本身和隔板后的部分之前的部分的3元组。如果未找到分隔符,则返回包含该字符串本身的三元组,然后返回两个空字符串。

既然你说,你只是想head,您可以使用re.split()方法从re模块,与maxsplit设置为1,然后取它的第一个元素,它应该相当于你用str.partition尝试。示例 -

import re 
testString = 'Tre Bröders Väg 6 2tr' 
sep = '[0-9]tr' 
head = re.split(sep,testString,1)[0] 

演示 -

>>> import re 
>>> testString = 'Tre Bröders Väg 6 2tr' 
>>> sep = '[0-9]tr' 
>>> head = re.split(sep,testString,1)[0] 
>>> head 
'Tre Bröders Väg 6 ' 
+0

谢谢。这根本不会发生在我身上! – seb