如何从 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)
我正在尝试使用以下代码从站点响应 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)