Python中文
首页
教程
问答
标签
搜索
登录
注册
Python正则表达式修复多种类型的编码数据
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在从一个网站上抓取数据,并试图从网站上的数据创建一个表。然而,网页可能有多种结构,因此我有这样做的困难</p> <p>到目前为止,我遇到的两种不同类型的结构是:</p> <pre><code>text1 = ['\nPie\n Type\n\xa0\nMain\n Ingrediënt\n\xa0\nCountry\n of Origin', '\nApplie\n Pie\n\xa0\nApples\n\xa0\nUnited\n Kingdom'] </code></pre> <p>及</p> <pre><code>text2 = ['\n\nPie Type\n\n\nMain Ingrediënt\n\n\nCountry of Origin\n\n', '\n\nApple Pie\n\n\nApples\n\n\nUnited Kingdom\n\n'] </code></pre> <p>到目前为止,使用以下代码:</p> <pre><code>for x in range(len(text1)): try: y = text1[x].strip().split('\xa0') tlist = [] for p in y: lst = p.replace('\n ', ' ').replace('\n', '') tlist.append(lst) dflist.append(tlist) except: dflist.append('X') </code></pre> <p>text1将返回以下输出:</p> <pre><code>[['Pie Type', 'Main Ingrediënt', 'Country of Origin'], ['Applie Pie', 'Apples', 'United Kingdom']] </code></pre> <p>这也是我希望文本2返回的内容。但在text2上使用相同的代码将返回:</p> <pre><code>[['Pie TypeMain IngrediëntCountry of Origin'], ['Apple PieApplesUnited Kingdom']] </code></pre> <p>因为它包含<code>\n\n\n</code>而不是<code>\n\xa0\n</code></p> <p>我曾尝试使用if语句来确定数据是否包含这两个语句中的任何一个,但如果使用<code>if '\xa0' in text1:</code>,这似乎不起作用</p> <p>有谁能帮我用一个正则表达式函数来将这两个函数转换成所需的结构,或者帮我想出另一种方法来解决这个问题</p> <p>谢谢</p> <p>编辑: 感谢所有及时回答这个问题的人。不幸的是,你的回答都没有给我提供我想要的结果,但我回答了我自己的问题。如果stackoverflow允许,我将在2天内接受它作为答案,除非我收到另一个有效的答案</p> <p>编辑: Suneesh Jacob和RJ Adriaansen都为这个问题提供了有效的代码解决方案。我决定对答案计时,并接受最快的答案为最佳答案</p> <p>结果:</p> <pre><code>def decode(data): return [[j.replace('\n ',' ').strip() for j in re.split(r'\n\n\n|\n\xa0\n',i)] for i in data] result: 0.07250859999999999 </code></pre> <p>及</p> <pre><code>def clean_list(lst): lst = [re.split('\n\n\n|\n\xa0\n',i) for i in lst] return [[' '.join(i.split()) for i in sublist] for sublist in lst] result: 0.0712564 </code></pre> <p>谢谢大家!</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>在您的情况下不需要正则表达式,只需执行此操作并在拆分之前添加替换即可</p> <pre><code> y = text1[x].strip().replace("\n\n\n",'\n\xa0\n').split('\xa0') </code></pre> <p>而不是</p> <pre><code>y = text1[x].strip().split('\xa0') </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
当用户用PYTHON设置一个或一个不带值的URL时,他们怎么能输入一个/a的代码呢?
3 回答
当用户登录到站点时,如何显示不同的导航栏
7 回答
当用户登录时,在Flask中向用户显示处理结果
9 回答
当用户的Flask会话结束时,我如何从Redis后端中移除所有Celery结果?
6 回答
当用户的Okta配置文件字段当前为blan时,更新该字段
6 回答
当用户的付款逾期2天时,从Django模型检索数据
3 回答
当用户的消息以问号结尾时,如何让机器人说些什么?
5 回答
当用户的系统上可能也安装了Python 2.7时,如何在用户的系统上运行Python 3脚本?
5 回答
当用户确定打印数量时,使用Matplotlib打印动画
3 回答
当用户离开时是否可以删除整个网页?
1 回答
当用户给出一个单词时如何打印?
6 回答
当用户继续更改TKin中的值(使用trace方法)时,使用Entry并更新输入的条目
10 回答
当用户编辑表单字段时,从Django时间字段中删除秒数
1 回答
当用户被更改时,消息不会来自web套接字
5 回答
当用户访问表单时,如何使表单为只读,而不具有更改权限
4 回答
当用户试图更改对象的值时,使用描述符类引发RuntimeError
4 回答
当用户调整GUI的大小时,是否有方法更改GUI内容的大小?
4 回答
当用户调整风的大小时,pythontkinter小部件的大小会不均匀
4 回答
当用户购买某个类别时,是否查找其他类别的销售?
3 回答
当用户转到上一页时,Django和芹菜插入操作
6 回答