我下面有一个长字符串,
'海拔信息:海拔范围:\ xa05680-5720 ft \ xa0 \ xa0 \ xa0 \ xa0(40英尺闭合轮廓)NAVD88海拔:\ xa05683 ft / 1732 m \ xa0 \ xa0 \ xa0 \ xa0(范围5683-5723 ft)纬度/经度 (WGS84)32°56 \'17 \'\'N,116°29 \'9 \'\'W32.938182,-116.485858(Dec Deg)548063 E 3644551 N,Zone 11(UTM)国家美国 州州/省加利福尼亚(最高点) 县/二级地区圣 迭戈 LinksSearch Engines-在网络上搜索“石榴石山”'
我想通过使用正则表达式获得“美国”,“加利福尼亚(最高点)”,“圣地亚哥”这两个词。
通过以下代码我很难找到“美国”和“圣地亚哥”,但结果为空
country = re.findall(('Country\S([A-z]*)\SState'),table.text)
country
region = re.findall(('Region\S(.)\SLinks'),table.text)
region
如何使用re提取所有这些单词?
此外,如果将“美国”替换为“日本” /“法国”
country = re.findall(('Country\S([A-z]*)\SState'),table.text)
country
输出为'apan'/'rance'。为什么它们不是一个完整的词。
谢谢!
答案 0 :(得分:0)
这对我有用:
import re
str = "'Elevation Info:Elevation range:\xa05680 - 5720 ft\xa0\xa0\xa0\xa0(40-foot closed contour) NAVD88 Elevation:\xa05683 ft / 1732 m\xa0\xa0\xa0\xa0(Range 5683 - 5723 ft)Latitude/Longitude (WGS84)32° 56\' 17\'\' N, 116° 29\' 9\'\' W32.938182, -116.485858 (Dec Deg)548063 E 3644551 N, Zone 11 (UTM)CountryUnited StatesState/ProvinceCalifornia (Highest Point) County/Second Level RegionSan DiegoLinksSearch Engines - search the web for \"Garnet Mountain'\""
country = re.findall(r"Country(\S*.*)State/", str)
province = re.findall(r"Province(\S*.*)County/", str)
city= re.findall(r"Region(\S*.*)Links", str)
print(country[0])
print(province[0])
print(city[0])
print("--------")
此外,您也许可以完全省略使用正则表达式,并使用Split()
:
country = str.split("Country")[1].split("State/")[0]
province = str.split("Province")[1].split("County/")[0]
city = str.split("Region")[1].split("Links")[0]
答案 1 :(得分:0)
\S*
匹配零个或多个非空白字符。您不需要这里。
使用.*
(零个或多个非换行符)代替或明确地说出您想要的字符。
例如[A-z0-9 ()]*
仅允许使用字母,数字,空格和括号。
要在空格之前或之后去除空格,您可以在组外添加\s*
(小s
),并使您的*
不再带有问号:\s*(.*?)\s*
一起:
import re
str = "'Elevation Info:Elevation range:\xa05680 - 5720 ft\xa0\xa0\xa0\xa0(40-foot closed contour) NAVD88 Elevation:\xa05683 ft / 1732 m\xa0\xa0\xa0\xa0(Range 5683 - 5723 ft)Latitude/Longitude (WGS84)32° 56\' 17\'\' N, 116° 29\' 9\'\' W32.938182, -116.485858 (Dec Deg)548063 E 3644551 N, Zone 11 (UTM)CountryUnited StatesState/ProvinceCalifornia (Highest Point) County/Second Level RegionSan DiegoLinksSearch Engines - search the web for \"Garnet Mountain'\""
countries = re.findall(r"Country\s*(.*?)\s*State/", str)
provinces = re.findall(r"Province\s*(.*?)\s*County/", str)
regions = re.findall(r"Second Level Region\s*(.*?)\s*Links", str)
print("Countries:")
for country in countries:
print(" ", country)
print("Provinces:")
for province in provinces:
print(" ", province)
print("Second Level Regions:")
for region in regions:
print(" ", region)
您可以在这里使用它:https://regex101.com/r/yeiJVg/1
或者您可以将它们分组在一起,以更大的字符串找到多个组:
import re
str = "'Elevation Info:Elevation range:\xa05680 - 5720 ft\xa0\xa0\xa0\xa0(40-foot closed contour) NAVD88 Elevation:\xa05683 ft / 1732 m\xa0\xa0\xa0\xa0(Range 5683 - 5723 ft)Latitude/Longitude (WGS84)32° 56\' 17\'\' N, 116° 29\' 9\'\' W32.938182, -116.485858 (Dec Deg)548063 E 3644551 N, Zone 11 (UTM)CountryUnited StatesState/ProvinceCalifornia (Highest Point) County/Second Level RegionSan DiegoLinksSearch Engines - search the web for \"Garnet Mountain'\""
matches = re.findall(r"Country\s*(.*?)\s*State/[.*\n]*Province\s*(.*?)\s*County/[.*\n]*Second Level Region\s*(.*?)\s*Links", str)
for match in matches:
print("Country: {}, Province: {}, Second Level Region: {}".format(*match))