如何从 requests.get().text 中排除换行符

How to exclude newline mark from requests.get().text

我正在尝试使用以下代码从站点响应 http://app.lotto.pl/wyniki/?type=dl 中删除数字

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() 方法。这种方法确实会删除字符串左侧的 newline/carriage return 个字符(这就是 lstrip 的原因)。
你可以试试

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

删除换行符。

或者您也可以用自身的剥离版本覆盖 data

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

然后简单地 print(data).

您可以使用 strip() 函数去除 \n

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

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

您的正则表达式不合适,因为 [^\d{4}\-\d{2}\-\d{2}]\d+ 匹配除数字以外的任何字符,{4}-2 然后是一位或多位数字。换句话说,你把一个序列变成了一个字符集。而那个 否定字符 class 可以匹配一个换行符。它也可以匹配任何字母。还有更多。 strip 在其他情况下无济于事,您需要修正正则表达式。

使用

r'(?<!-)\b\d+\b(?!-)'

查看 regex and IDEONE demo

此模式将匹配前面没有连字符 ((?<!-)) 或任何单词字符 (\b) 并且后面没有跟一个的 1+ 个数字 (\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)