regex 如何从Pandasdf列的URL中正则表达式提取CAR MAKE

h7appiyu  于 2022-11-18  发布在  其他
关注(0)|答案(3)|浏览(122)

我尝试从URL str“/used/Mercedes-Benz/2021-Mercedes-Benz-Sprinte...”中提取整个品牌名称,即“Mercedes-Benz”,但我的模式只返回第一个字母,即“M”
请帮我想出正确的图案用在Pandasdf上。
谢谢你
代码:URLS_by_City['Make'] = URLS_by_City['Page'].str.extract('.+([A-Z])\w+(?=[\/])+', expand=True) Clean_Make = URLS_by_City.dropna(subset=["Make"]) Clean_Make # WENT FROM 5K rows --> to 2688 rows

Page    City    Pageviews   Unique Pageviews    Avg. Time on Page   Entrances   Bounce Rate % Exit  **Make**
71  /used/Mercedes-Benz/2021-Mercedes-Benz-Sprinte...   San Jose    310 149 00:00:27    149 2.00%   47.74%  **B**
103 /used/Audi/2015-Audi-SQ5-286f67180a0e09a872992...   Menlo Park  250 87  00:02:36    82  0.00%   32.40%  **A**
158 /used/Mercedes-Benz/2021-Mercedes-Benz-Sprinte...   San Francisco   202 98  00:00:18    98  2.04%   48.02%  **B**
165 /used/Audi/2020-Audi-S8-c6df09610a0e09af26b5cf...   San Francisco   194 93  00:00:42    44  2.22%   29.38%  **A**
168 /used/Mercedes-Benz/2021-Mercedes-Benz-Sprinte...   (not set)   192 91  00:00:11    91  2.20%   47.40%  **B**
... ... ... ... ... ... ... ... ... ...
4995    /used/Subaru/2019-Subaru-Crosstrek-5717b3040a0...   Union City  10  3   00:02:02    0   0.00%   30.00%  **S**
4996    /used/Tesla/2017-Tesla-Model+S-15605a190a0e087...   San Jose    10  5   00:01:29    5   0.00%   50.00%  **T**
4997    /used/Tesla/2018-Tesla-Model+3-0f3ea14d0a0e09a...   Las Vegas   10  4   00:00:09    2   0.00%   40.00%  **T**
4998    /used/Tesla/2018-Tesla-Model+3-0f3ea14d0a0e09a...   Austin  10  4   00:03:29    2   0.00%   40.00%  **T**
4999    /used/Tesla/2018-Tesla-Model+3-5f29cdc70a0e09a...   Orinda  10  4   00:04:00    1   0.00%   0.00%   **T**

已试用:“”---------------------------------------------------------------------------------------------------------([a-zA-Z0-9()])\w+(?=[/])+”

wanted_make = URLS_by_City['Page'].str.extract(pattern)
wanted_make

“0 0 r 1 r 2 NaN 3 NaN 4 r ... ... 4995 r 4996 l 4997 l 4998 l 4999 l
它在regex在线工具工作.
但不幸的是我的jupyter笔记本里没有
示例模式-我将匹配的内容加粗:/二手/梅赛德斯-奔驰/2021-梅赛德斯-奔驰-斯普林特+2500-9f3d32130a0e09af63592c3c48ac5c24.htm?商店代码=AudiOakland&广告集团= 139456079219 &广告ID = 611973748445 &广告数字供应商=adpearance&广告设备=m&广告活动ID= 17820707224 &广告prov =1 /二手/奥迪/2020-Audi-S8- 2021-奔驰-斯普林特+2500-9f3d32130a0e09af63592c3c48ac5c24.htm?商店代码=AudiOakland&广告集团= 139456079219 &广告ID = 611973748445 &广告提供商=广告设备=广告活动标识= 17820707224 &广告prov = 1 /二手/奥迪/2021款奥迪-RS +5-b92922bd0a0e09a91b4e6e9a29f63e8f.htm /二手/雷克萨斯/2018款雷克萨斯-GS +350-dffb145e0a0e09716bd5de4955662450.htm /二手/保时捷/2014款保时捷-博克斯特-0423401a0a0e09a9358a179195e076a9.htm/二手/奥迪/2014-奥迪-A6 - 1792929d0a0e09b11bc7e218a1fa7563.htm/二手/本田/2018-本田-思域-8e664dd50a0e0a9a43aacb6d1ab64d28.htm /新库存/索引.htm?normalFuelType=混合动力&normalFuelType=电动/二手库存/索引. htm/新库存/索引. htm/新库存/索引.htm?normalFuelType=混合动力&normalFuelType=电动/

i5desfxk

i5desfxk1#

我已经尝试完成你的要求在木星笔记本。
PFB代码及截图:
1.我已经创建了一个虚拟Pandas Dataframe (data_df),下面是相同的屏幕截图

1.我已经根据要提取的字符串的模式创建了一个模式
模式=“^/已使用/(.*)/(?=[20][0-9{2}])”
1.使用该模式从URL中提取所需数据,并将其保存在同一 Dataframe 的另一列中
字符串.extract(模式)
1.下面是输出的屏幕截图

我希望这是有帮助的。

vybvopom

vybvopom2#

我会用途:

URLS_by_City["Make"] = URLS_by_City["Page"].str.extract(r'([^/]+)/\d{4}\b')

这会将URL路径区段定位在年份部分之前。您也可以尝试此版本:

URLS_by_City["Make"] = URLS_by_City["Page"].str.extract(r'/[^/]+/([^/]+)')
jgovgodb

jgovgodb3#

以下代码将为您提供型号和VIN值:

pattern2 = '^/used/[a-zA-Z\-]*/([0-9]{4}[a-zA-Z0-9\-+]*)-[a-z0-9]*.htm'
pattern3 = '^/used/[a-zA-Z\-]*/[0-9]{4}[a-zA-Z0-9\-+]*-([a-z0-9]*).htm'

data_df['Model'] = data_df['urls'].str.extract(pattern2)
data_df['VIN'] = data_df['urls'].str.extract(pattern3)

以下是输出的屏幕截图:

相关问题