2013-12-11 28 views
1

使用Python我目前正试图去掉两个字符之间发生的字符串的一部分。字符串可以有不同的长度,所以字符计数将不起作用。什么我期待的将是一个例子:使用python去除重复字符之间的字符串的一部分

172.-.221 - - [07/-20-:16:36:27 -0500] Firefox/17.0" ** 0 s/ 950 ms ** 

字符串中所需的部分是0 s/ 950 ms,我已经注意到,它的对双星号(** **)一贯的之间发生。

我怎样才能抓住两个星号之间的字符串部分(**)?我将如何输出到屏幕或将其保存到文件?

+0

Python版本您使用的? – thegrinner

+0

此外,您可能会看到[这个优秀的答案](http://stackoverflow.com/a/9891784/264775)类似的情况下('**'相当于括号)。 – thegrinner

回答

1

你可以使用str.split将其解压:

myString.split("**")[1] 

这通过在"**"每次出现分裂字符串创建一个字符串列表,然后采取第二项,从该清单中索引1

2
>>> s='172.-.221 - - [07/-20-:16:36:27 -0500] Firefox/17.0" ** 0 s/ 950 ms **' 
>>> s.split('**')[1].strip() 
'0 s/ 950 ms' 
+0

谢谢工作很好! – user3092850

3

这正是重新制作的那种东西。例如

import re 

TheString = '172.-.221 - - [07/-20-:16:36:27 -0500] Firefox/17.0" ** 0 s/ 950 ms **' 

wc = re.compile(r'\*\*(.*)\*\*') 
matches = wc.findall(TheString) 

#returns ['0 s/ 950 ms '] 
+0

您也可以重写第二行以便将空格考虑在内。 wc = re.compile(r'\\ * \\ *(。*)\\ * \\ *') –

+0

如果需要,您可以 - 亲自给我们'r'\ * \ * *(。*)* \ * \ *',以允许可变数目的空格。 –

+0

是的,您会匹配任意数量的空格,并且所有这些空格都将收集在“匹配”变量中。这不是用户想要的。 (根据问题)。 –

1

这是一样好:)

>>> import re 
>>> string = '172.-.221 - - [07/-20-:16:36:27 -0500] Firefox/17.0" ** 0 s/ 950 ms **' 
>>> re.search('\*{2}(.+)\*{2}', string).group(1) 
' 0 s/ 950 ms ' 
相关问题