全球主机交流论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

CeraNetworks网络延迟测速工具IP归属甄别会员请立即修改密码
查看: 719|回复: 16

已解决-来个python指点下小弟,如何替换“数组”中的字符

[复制链接]
发表于 2021-11-14 09:24:14 | 显示全部楼层 |阅读模式
本帖最后由 战神赵日天 于 2021-11-14 10:22 编辑

额,小弟py基础太弱鸡,百度和谷歌也找不到解决办法,故只能发到loc求教屌大的mjj

首先呢,我用以下代码获取一个页面的我需要的数据,这个数据是个数组格式,我获取的就是好几个同属性的数据

  1. s = re. compile ('{' + '(.*?)' + '}',re.S).findall(str(response.content))
复制代码


然后数据出来显示
  1. ['5220, \\n                "name": 0\\n              ', '2849, \\n                "name": 0\\n              ', '3630, \\n                "name": 0\\n              ', '4549, \\n                "name": 0\\n              ', '4745, \\n                "name": 0\\n              ', '4745, \\n                "name": 0\\n              ', '4745, \\n                "name": 0\\n              ', '4750, \\n                "name": 0\\n              ', '4750, \\n                "name": 0\\n              ', '4750, \\n                "name": 0\\n              ', '4750, \\n                "name": 0\\n              ', '4870, \\n                "name": 0\\n              ', '4848, \\n                "name": 0\\n              ', '4869, \\n                "name": 0\\n              ', '4929, \\n                "name": 0\\n              ']
复制代码


但是我需要整理这个数据,去掉空格,去掉\\n
我尝试过使用replace,但是直接数组都不输出了,所以我也不知道咋办了,只能请教一下大屌们
发表于 2021-11-14 09:37:43 | 显示全部楼层
loc上没法直接把刚随手写的发给你:您的请求带有不合法参数,已被网站管理员设置拦截!

可能原因:您提交的内容包含危险的攻击请求

如何解决:

1)检查提交内容;
2)如网站托管,请联系空间提供商;
3)普通网站访客,请联系网站管理员;



放图:

点评

最后用这个搞定,不过有个小改动第二个tmp = text 改成tmp=tmp  发表于 2021-11-14 10:20
发表于 2021-11-14 09:25:28 | 显示全部楼层
用循环,把列表中的每一个元素都replace一遍
发表于 2021-11-14 09:27:11 | 显示全部楼层
本帖最后由 sRGB 于 2021-11-14 09:54 编辑

你抓的数据可能是二进制 b'str'   然后你显出输出不是原始数据,而且为了显示添加上了转移字符的 \\n

r = requests.get(url=url, headers=headers)
html = r.text

使用 requests 抓取,应该使用 response.text 转换成字符串

你试试修改成  response.text 试试
response.text 返回的是一个 unicode 型的文本数据
response.content 返回的是 bytes 型的二进制数据


 楼主| 发表于 2021-11-14 09:27:26 | 显示全部楼层
Floppy 发表于 2021-11-14 09:25
用循环,把列表中的每一个元素都replace一遍

大佬,帮人帮到底吧,稍微写几行,让小弟少走点弯路,多谢多谢
 楼主| 发表于 2021-11-14 09:28:57 | 显示全部楼层
sRGB 发表于 2021-11-14 09:27
你抓的数据可能是二进制 b'str'   然后你显出输出不是原始数据,而且为了显示添加上了转移字符的 \\n ...

这个就更加高深了,我只想去掉空格,以及\\n,至于数据原始的还是二进制的,可能还不在我目前考虑范畴
发表于 2021-11-14 09:36:54 | 显示全部楼层
本帖最后由 sRGB 于 2021-11-14 09:40 编辑

response.text 与 response.content

在某些情况下来说,response.text 与 response.content 都是来获取response中的数据信息,效果看起来差不多。那么response.text 和 response.content 到底有哪些差别 ? 什么情况下该用 response.text 什么情况下该用 response.content ?

返回的数据类型
response.text 返回的是一个 unicode 型的文本数据
response.content 返回的是 bytes 型的二进制数据

也就是说如果想取文本数据可以通过response.text 如果想取图片,文件,则可以通过 response.content

数据编码
response.content 返回的是二进制响应内容
response.text 则是默认”iso-8859-1”编码,服务器不指定的话是根据网页的响应来猜测编码。


发表于 2021-11-14 09:41:33 | 显示全部楼层
不用replace了

new_s = [item.strip() for item in s]

如果不行,查下strip的用法,去掉后面不想要的字符
 楼主| 发表于 2021-11-14 09:41:50 | 显示全部楼层
sRGB 发表于 2021-11-14 09:27
你抓的数据可能是二进制 b'str'   然后你显出输出不是原始数据,而且为了显示添加上了转移字符的 \\n

r =  ...

好滴,感谢大佬指点,这个我的确需要注意,以及后续改进代码
恩,不过就算这样,应该获得的数据还是存在空格的,恩,还是要解决数组内替换空格
另外我有个疑问,能不能直接在获取的时候,就不获取空格以及\n,这样不就行了嘛,有这样的功能嘛
 楼主| 发表于 2021-11-14 09:42:55 | 显示全部楼层
Floppy 发表于 2021-11-14 09:37
loc上没法直接把刚随手写的发给你:您的请求带有不合法参数,已被网站管理员设置拦截!

可能原因:您提交 ...

多谢大佬热心指点,小弟这就去修改测试,多谢多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|全球主机交流论坛

GMT+8, 2025-2-17 22:26 , Processed in 0.071314 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表