Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何从请求中排除换行标记。get().text_Regex_Python 3.x_Python Requests_Newline - Fatal编程技术网

Regex 如何从请求中排除换行标记。get().text

Regex 如何从请求中排除换行标记。get().text,regex,python-3.x,python-requests,newline,Regex,Python 3.x,Python Requests,Newline,我试图用下面的代码从站点响应中删除数字 import requests import re url = 'http://app.lotto.pl/wyniki/?type=dl' p = re.compile(r'[^\d{4}\-\d{2}\-\d{2}]\d+') response = requests.get(url) data = re.findall(p, response.text) print(data) 但是我得到的不是['7'、'46'、'8'、'43'、'9'、'47'

我试图用下面的代码从站点响应中删除数字

import requests
import re

url = 'http://app.lotto.pl/wyniki/?type=dl'
p = re.compile(r'[^\d{4}\-\d{2}\-\d{2}]\d+')

response = requests.get(url)
data = re.findall(p, response.text)
print(data)

但是我得到的不是
['7'、'46'、'8'、'43'、'9'、'47']
而是
['\n7'、'\n46'、'\n8'、'\n43'、'\n9'、'\n47']
我如何摆脱
“\n”

既然你的数字是字符串,你可以很容易地使用
lstrip()
方法处理字符串。这种方法确实会删除字符串左侧的换行符/回车符(这就是为什么lstrip)。
你可以试试类似的东西

print([item.lstrip() for item in data])
删除换行符

或者,您也可以使用剥离版本本身覆盖
数据

data=[item.lstrip() for item in data]

然后只需
打印(数据)

即可使用
strip()
功能剥离
\n

data = [x.strip() for x in re.findall(p, response.text)]

我假设
\n
既可以在开头也可以在结尾

您的正则表达式不合适,因为
[^\d{4}-\d{2}-\d{2}]\d+
匹配除数字以外的任何字符,
{/code>,
4
}
2
,然后是1个或更多数字。换句话说,您将序列转换为字符集。这个被否定的字符类可以匹配换行符。它也可以匹配任何字母。还有更多
strip
在其他上下文中没有帮助,您需要修复正则表达式。

使用


将序列放入字符类,这意味着您不确定所编写的模式的含义。你的意图是什么?
data=[x.strip()代表re.findall(p,response.text)]
@WiktorStribiżew只想从站点获取数字,但简单的回答是这样的:2016-03-29 7 46 8 43 9 47拜托,你为什么不直接使用?看,谢谢。我只是一个业余爱好者,所以我还在学习。它只能在当前输入下工作。如果这些数字出现在稍微不同的背景下,问题将依然存在。问题出在正则表达式中。@WiktorStribiżew我没有读正则表达式。我认为这是一个更简单的问题。我的错+谢谢你的解决方案。成功了。事实上,在更改regex之后,我不必使用
strip
r'(?<!-)\b\d+\b(?!-)'
import requests
import re

url = 'http://app.lotto.pl/wyniki/?type=dl'
p = re.compile(r'(?<!-)\b\d+\b(?!-)')

response = requests.get(url)
data = p.findall(response.text)
print(data)