gpt4 book ai didi

Python Regex : How do I use regular expression to read in a file with multiple lines, 并从每一行中提取单词以创建两个不同的列表

转载 作者:行者123 更新时间:2023-12-02 09:16:22 24 4
gpt4 key购买 nike

country_names.txt 是一个多行文件,每行包含一个欧洲国家和一个亚洲国家。读入每一行文本,直到出现一行包含国家/地区名称的行。

文本文件中的示例行: <td >England</td> <td>55.98</td> <td >Japan</td> <td>126.8</td></tr>

如何使用ONLY ONE正则表达式从包含两个国家/地区的任何行中提取欧洲国家/地区和亚洲国家/地区。提取国家/地区后,将欧洲国家/地区存储在欧洲国家/地区名称列表中,将亚洲国家/地区存储在亚洲国家/地区名称列表中。

读入所有行后,打印读入的欧洲国家和亚洲国家数量。

目前,这就是我所拥有的:

import re

with open('country_names.txt') as infile:

for line in infile:

countries = re.findall("", "", infile) # regex code inside ""s in parenthesis

european_countries = countries.group(1)

asian_countries = countries.group(2)

最佳答案

仅对于一个正则表达式,您应该使用 ^<td\s*>([a-zA-Z]+)<\/td\s*>.*<td\s*>([a-zA-Z]+)<\/td\s*> 。你可以在这里玩它:https://regex101.com/r/q9XHDD/1

在您的示例上运行它时,您将得到:

>>> re.findall("^<td\s*>([a-zA-Z]+)<\/td\s*>.*<td\s*>([a-zA-Z]+)<\/td\s*>.*", "<td >England</td> <td>55.98</td> <td >Japan</td> <td>126.8</td></tr>")
[('England', 'Japan')]

我给你的建议是不要使用re.findall但要使用re.match然后你的代码应该是

import re

regex = "^<td\s*>([a-zA-Z]+)<\/td\s*>.*<td\s*>([a-zA-Z]+)<\/td\s*>.*"
eu_countries = []
as_countries = []
with open('country_names.txt') as infile:
for line in infile:
match = re.match(regex, line )
if match:
eu_countries.append(match.group(1))
as_countries.append(match.group(2))

关于Python Regex : How do I use regular expression to read in a file with multiple lines, 并从每一行中提取单词以创建两个不同的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59162860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com