Python中如何将爬取的网页文本按换行符正确拆分
问题原因
- 你调用的接口返回的是标准JSON格式数据,你现在拿到的text是未解析的JSON原始字符串,里面显示的
\n是JSON转义后的字符,不是实际的换行符,所以直接调用splitlines/split('\n')都不会生效。 - 你贴的输出样例末尾还能看到
","id":"17489"}]的JSON结构尾缀,也能证明你拿到的是完整JSON串,不是纯文本内容。
修复后的代码
import urllib.request import json def get_les_mis(): url = "http://corpus-db.org/api/id/17489/fulltext" try: with urllib.request.urlopen(url) as f: # 先解析JSON数据 json_data = json.loads(f.read().decode('utf-8')) # 接口返回的是列表包字典结构,提取第一个元素的fulltext字段就是纯文本内容 text = json_data[0]['fulltext'] # 此时text里的\n已经是实际换行符,可以正常拆分 lines = text.splitlines() for line in lines: # 不需要过滤空行可以删掉if判断 if line.strip(): print(line) except urllib.error.URLError as e: print(e.reason) except json.JSONDecodeError as e: print(f"JSON解析失败:{e}")
补充说明
接口返回的JSON结构里,只有提取出fulltext字段的内容后,里面的转义字符才会被还原成实际的换行、缩进等格式,再做按行拆分的操作才会符合预期。如果需要保留原文里的空行,删除判断空行的逻辑即可。
内容的提问来源于stack exchange,提问作者s-cat-z
相关产品推荐
相关产品推荐

