Python 将某个单词后面的所有内容存储在一行、一个列表中-Regex
所以我有一句台词Python 将某个单词后面的所有内容存储在一行、一个列表中-Regex,python,Python,所以我有一句台词 unicomp6.unicomp.net - - [01/Jul/1995:00:00:14 -0400] "GET /images/NASA-logosmall.gif HTTP/1.0" 200 786 我想把HTTP/1.0(这两个数字)之后的所有内容都存储到列表中,我该如何使用正则表达式呢?我已经阅读了它们的文档,但它们让我有点困惑。你不需要正则表达式,你可以使用内置的str方法。例如 s = 'unicomp6.unicomp.net - - [01/Jul/199
unicomp6.unicomp.net - - [01/Jul/1995:00:00:14 -0400] "GET /images/NASA-logosmall.gif HTTP/1.0" 200 786
我想把HTTP/1.0(这两个数字)之后的所有内容都存储到列表中,我该如何使用正则表达式呢?我已经阅读了它们的文档,但它们让我有点困惑。你不需要正则表达式,你可以使用内置的
str
方法。例如
s = 'unicomp6.unicomp.net - - [01/Jul/1995:00:00:14 -0400] "GET /images/NASA-logosmall.gif HTTP/1.0" 200 786'
data = s.partition('HTTP/1.0" ')
nums = data[2].split()
print(nums)
输出
['200', '786']
[200, 786]
您也可以使用.split()
而不是.partition()
,但我认为.partition()
在这里更自然。请注意,nums
中存储的数字是字符串,因此如果需要对它们进行算术运算,则需要添加转换步骤
下面是一个使用.split()
而不是.partition()
将数字字符串转换为整数的示例
data = s.split('HTTP/1.0"')
nums = [int(u) for u in data[1].split()]
print(nums)
输出
['200', '786']
[200, 786]
你不需要正则表达式,你可以使用内置的
str
方法
s = 'unicomp6.unicomp.net - - [01/Jul/1995:00:00:14 -0400] "GET /images/NASA-logosmall.gif HTTP/1.0" 200 786'
data = s.partition('HTTP/1.0" ')
nums = data[2].split()
print(nums)
输出
['200', '786']
[200, 786]
您也可以使用.split()
而不是.partition()
,但我认为.partition()
在这里更自然。请注意,nums
中存储的数字是字符串,因此如果需要对它们进行算术运算,则需要添加转换步骤
下面是一个使用.split()
而不是.partition()
将数字字符串转换为整数的示例
data = s.split('HTTP/1.0"')
nums = [int(u) for u in data[1].split()]
print(nums)
输出
['200', '786']
[200, 786]
您可以使用,来构造适合您需要的正则表达式
对于您的特定示例,以下RE将起作用:
HTTP\/1.0.(.*$)
说明:
在组中捕获HTTP 1.0“
给出输出:
` 200 786`
您可以使用,来构造适合您需要的正则表达式
对于您的特定示例,以下RE将起作用:
HTTP\/1.0.(.*$)
说明:
在组中捕获HTTP 1.0“
给出输出:
` 200 786`
是否必须使用正则表达式?如果不需要,可以执行以下操作:
>>> lines = ['unicomp6.unicomp.net - - [01/Jul/1995:00:00:14 -0400] "GET /images/NASA-logosmall.gif HTTP/1.0" 200 786']
>>>
>>> numbers = [line.split()[-2:] for line in lines]
>>> numbers
[['200', '786']]
>>>
这假设“最后两个以空格分隔的字符串”与您想要的字符串相等。您必须使用正则表达式吗?如果不需要,您可以这样做:
>>> lines = ['unicomp6.unicomp.net - - [01/Jul/1995:00:00:14 -0400] "GET /images/NASA-logosmall.gif HTTP/1.0" 200 786']
>>>
>>> numbers = [line.split()[-2:] for line in lines]
>>> numbers
[['200', '786']]
>>>
这假设“最后两个空格分隔的字符串”与您想要的字符串相等。只获取“最后两个空格分隔的字符串”怎么样"? 你想让它们成为
int
?如果你这样做只是为了了解regex,那么最好选择使用regex的答案。但是请注意,使用内置str
方法的代码通常比基于正则表达式的解决方案要快得多。只获取“最后两个空格分隔的字符串”怎么样?你想让它们成为int
?如果你这样做只是为了了解regex,那么最好选择使用regex的答案。但是请注意,使用内置str
方法的代码通常比基于regex的解决方案要快得多。从OP中不清楚HTTP/1.0之后总是有两个项目“
;希望尼克能为我们澄清这一点。OTOH,依我看,保持事情的灵活性比编写只处理两项的代码要好。另外,如果我们不需要那些早期的子字符串,那么将.split()
的输入分割到每个空白处似乎有点浪费。从OP上看不清楚HTTP/1.0之后是否总是正好有两个项目“
;希望尼克能为我们澄清这一点。OTOH,依我看,保持事情的灵活性比编写只处理两项的代码要好。另外,当我们不需要那些早期的子字符串时,将.split()。