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)