亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

使用 Python 和正則表達式從字符串中提取子字符串

使用 Python 和正則表達式從字符串中提取子字符串

楊__羊羊 2021-09-14 15:51:18
我在“頁面”列中有一個包含很長字符串的熊貓數據框,我試圖從中提取子字符串:示例字符串: /ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s& search_query=示例一&y=0&x=0使用正則表達式,我很難確定如何提取兩個&符號之間的字符串并刪除較大字符串的所有其他字符部分。到目前為止,我的代碼如下所示:import pandas as pdimport redataset = pd.read_excel(r'C:\Users\example.xlsx')dataframe = pd.DataFrame(dataset)dataframe['Page'] = format = re.search(r'&(.*)&',str(dataframe['Page']))dataframe.to_excel(r'C\Users\output.xlsx)上面的代碼運行但不會向我的新電子表格輸出任何內容。
查看完整描述

3 回答

?
呼喚遠方

TA貢獻1856條經驗 獲得超11個贊

您可以使用 提取 URL 中的查詢字符串urllib.parse.urlparse,然后使用 解析它urllib.parse.parse_qs:


>>> from urllib.parse import urlparse, parse_qs

>>> path = '/ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s&search_query=example one&y=0&x=0'

>>> query_string = urlparse(path).query  

>>> parse_qs(query)

{'search_query': ['example one'], 'y': ['0'], 'x': ['0']}

編輯:query_string從Page列中的所有頁面中提取:


dataframe['Page'] = dataframe['Page'].apply(lambda page: parse_qs(urlparse(page).query)['search_query'][0])



查看完整回答
反對 回復 2021-09-14
?
狐的傳說

TA貢獻1804條經驗 獲得超3個贊

你可以試試這個

(?<=&).*?(?=&)

解釋

  • (?<=&)- 積極的回顧。匹配&。

  • (.*?)- 匹配除換行符以外的任何內容。(懶人方法)。

  • (?=&)- 正向前瞻匹配&。


查看完整回答
反對 回復 2021-09-14
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

快速高效的熊貓方法。


示例數據:


temp,page

1,  /ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s&search_query=example one&y=0&x=0

2,  /ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s&search_query=example one&y=0&x=0

3,  /ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s&search_query=example one&y=0&x=0

代碼:


df = example.data # from above

df["query"] = df['page'].str.split("&", expand=True)[1].str.split("=", expand=True)[1]

print(df)

示例輸出:


   temp  \

0  1          

1  2          

2  3          


                                                                                                          page  \

0    /ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s&search_query=example one&y=0&x=0   

1    /ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s&search_query=example one&y=0&x=0   

2    /ex/search/!tu/p/z1/zVJdb4IwFP0r88HH0Sp-hK/dz/d5/L2dBISEvZ0FBIS9nQSEh/?s&search_query=example one&y=0&x=0   


         query  

0  example one  

1  example one  

2  example one  

如果您想根據 key=value 對標記您的列,那將是不同的提取后記。


查看完整回答
反對 回復 2021-09-14
  • 3 回答
  • 0 關注
  • 370 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號