Python】從文本字符串中提取數字、電話號碼、日期、網址的方法

關于從文本字符串中提取數字、電話號碼、日期和網址的方法:

?

提取數字:

?

在 Python 中,使用正則表達式?\d?來匹配數字。?\d?表示匹配一個數字字符(0-9)。如果要匹配連續的數字,可以使用?\d+?。

?

?

import re

?

def extract_digits(text):

? ? digit_list = re.findall(r'\d+', text)

? ? return [int(digit) for digit in digit_list] # 將提取的數字字符串轉換為整數

?

text = "I have 15 apples and 20 oranges. The price is $30."

print(extract_digits(text))

?

?

提取電話號碼:

?

電話號碼的格式多種多樣,但常見的有以下幾種:

?

1.?以 ?+? 開頭,后面跟國家代碼和電話號碼,例如:?+8613812345678?

2.?沒有 ?+? ,直接是國家代碼和電話號碼,例如:?8613812345678?

3.?國內的手機號碼,通常是 11 位數字,以 1 開頭,例如:?13812345678?

4.?固定電話號碼,可能有區號,例如:?010-12345678? 或 ?021 12345678?

?

以下是一個相對復雜的電話號碼提取函數示例:

?

?

import re

?

def extract_phone_numbers(text):

? ? patterns = [

? ? ? ? r'\+\d{1,3}\d{10}', # 以 + 開頭,后面是國家代碼和 10 位電話號碼

? ? ? ? r'\d{11}', # 11 位手機號碼

? ? ? ? r'\d{3}-\d{7,8}', # 區號 3 位,號碼 7 到 8 位

? ? ? ? r'\d{4}-\d{7}', # 區號 4 位,號碼 7 位

? ? ? ? r'\d{3}\s\d{7,8}', # 區號 3 位,空格分隔,號碼 7 到 8 位

? ? ? ? r'\d{4}\s\d{7}' # 區號 4 位,空格分隔,號碼 7 位

? ? ]

? ? phone_numbers = []

? ? for pattern in patterns:

? ? ? ? found_numbers = re.findall(pattern, text)

? ? ? ? phone_numbers.extend(found_numbers)

? ? return phone_numbers

?

text = "My phone number is +8613812345678. Another one is 010-12345678 and 15912345678"

print(extract_phone_numbers(text))

?

?

提取日期:

?

日期的格式非常多,常見的有 ?YYYY-MM-DD?、?MM/DD/YYYY?、?DD-MM-YYYY? 等。以下是一個能夠處理多種常見日期格式的示例:

?

?

from datetime import datetime

import re

?

def extract_dates(text):

? ? date_patterns = [

? ? ? ? r'\d{4}-\d{2}-\d{2}', # YYYY-MM-DD

? ? ? ? r'\d{2}/\d{2}/\d{4}', # MM/DD/YYYY

? ? ? ? r'\d{2}-\d{2}-\d{4}', # DD-MM-YYYY

? ? ]

? ? dates = []

? ? for pattern in date_patterns:

? ? ? ? found_dates = re.findall(pattern, text)

? ? ? ? for date_str in found_dates:

? ? ? ? ? ? try:

? ? ? ? ? ? ? ? date = datetime.strptime(date_str, pattern)

? ? ? ? ? ? ? ? dates.append(date)

? ? ? ? ? ? except ValueError:

? ? ? ? ? ? ? ? pass

? ? return dates

?

text = "The event is on 2024-07-07 and another one on 07/07/2024 and 07-07-2024"

print(extract_dates(text))

?

?

提取網址:

?

網址的格式通常以 ?http? 或 ?https? 開頭,后面跟著域名和路徑等。以下是一個提取網址的示例:

?

?

import re

?

def extract_urls(text):

? ? url_pattern = r'https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+'

? ? return re.findall(url_pattern, text)

?

text = "Check out these websites: https://www.example.com/page?param=value and http://another-site.org"

print(extract_urls(text))

?

?

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/42488.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/42488.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/42488.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

C++面向對象的常見面試題目(一)

1. 面向對象的三大特征 &#xff08;1&#xff09;封裝&#xff1a;隱藏對象的內部狀態&#xff0c;只暴露必要的接口。 #include <iostream> #include <string>// 定義一個簡單的類 Person class Person { private: // 私有成員&#xff0c;外部不可直接訪問std…

Mac OS ssh 連接提示 Permission denied (publickey)

這錯誤有點奇葩&#xff0c;MacBook的IDE(vscode和pycharm)遠程都連不上&#xff0c;terminal能連上&#xff0c;windows的pycharm能連上&#xff0c;見鬼了&#xff0c;所以肯定不是秘鑰的問題了&#xff0c;查了好久竟然發現是權限的問題。。 chmod 400 ~/.ssh/id_rsa http…

華為機試HJ37統計每個月兔子的總數

華為機試HJ37統計每個月兔子的總數 題目&#xff1a; 想法&#xff1a; 上述題目實際是一個斐波那契數列&#xff0c;利用斐波那契數列對問題進行求解 input_number int(input())def fib(n):if n < 2:return 1else:n_1 1n_2 1count 2while count < n:n_1, n_2 n_…

【Android】【多屏】多屏異顯異觸調試技巧總結

這里寫目錄標題 如何獲取多屏IDs獲取多屏的size/density如何啟動應用到指定DisplayId多屏截屏/錄屏screencapscreenrecord發送按鍵到指定DisplayId 如何獲取多屏IDs dumpsys display | grep mDisplayIdtrinket:/ # dumpsys display | grep mDisplayIdmDisplayId0mDisplayId2 t…

【AI資訊】可以媲美GPT-SoVITS的低顯存開源文本轉語音模型Fish Speech

Fish Speech是一款由fishaudio開發的全新文本轉語音工具&#xff0c;支持中英日三種語言&#xff0c;語音處理接近人類水平&#xff0c;使用Flash-Attn算法處理大規模數據&#xff0c;提供高效、準確、穩定的TTS體驗。 Fish Audio

區塊鏈技術的應用場景和優勢。

區塊鏈技術具有廣泛的應用場景和優勢。 區塊鏈技術的應用場景&#xff1a; 1. 金融服務&#xff1a;區塊鏈可用于支付、跨境匯款、借貸和結算等金融服務&#xff0c;提高交易效率、降低成本并增強安全性。 2. 物聯網&#xff08;IoT&#xff09;&#xff1a;區塊鏈可以用于物…

機器學習Day12:特征選擇與稀疏學習

1.子集搜索與評價 相關特征&#xff1a;對當前學習任務有用的特征 無關特征&#xff1a;對當前學習任務沒用的特征 特征選擇&#xff1a;從給定的特征集合中選擇出相關特征子集的過程 為什么要特征選擇&#xff1f; 1.任務中經常碰到維數災難 2.去除不相關的特征能降低學習的…

Git注釋規范

主打一個有用 代碼的提交規范參考如下&#xff1a; init:初始化項目feat:新功能&#xff08;feature&#xff09;fix:修補bugdocs:文檔&#xff08;documentation&#xff09;style:格式&#xff08;不影響代碼運行的變動&#xff09;refactor:重構&#xff08;即不是新增功能…

NodeJs獲取文件擴展名

path.extname 是 Node.js 路徑模塊 (path) 中的一個方法&#xff0c;用于獲取文件路徑的擴展名。擴展名是指文件名中最后一個 .&#xff08;點&#xff09;之后的部分&#xff0c;包括這個 .。 const path require(path);const filename example.txt; const ext path.extna…

計算機網絡之令牌環

1.令牌環工作原理 令牌環&#xff08;Token Ring&#xff09;是一種局域網&#xff08;LAN&#xff09;的通信協議&#xff0c;最初由IBM在1984年開發并標準化為IEEE 802.5標準。在令牌環網絡中&#xff0c;所有的計算機或工作站被連接成一個邏輯或物理的環形拓撲結構。網絡中…

排序(2)

我們在排序&#xff08;1&#xff09;中說到選擇排序的代碼&#xff1a; void SelectSort(int* a,int n) {int begin0,endn-1;int minibegin,maxbegin;for(int ibegin1;i<end;i){if(a[i]>a[max]){maxii;}if(a[i]<a[mini]){minii;}begin;--end;}Swap(&a[beign],&a…

SKF軸承故障頻率查詢

1&#xff0c;第一步&#xff1a;搜索軸承型號 skf官網 2&#xff0c;第二步&#xff1a;查詢故障頻率。 第三步&#xff1a;

尚品匯-(十四)

&#xff08;1&#xff09;提交git 商品后臺管理到此已經完成&#xff0c;我們可以把項目提交到公共的環境&#xff0c;原來使用svn&#xff0c;現在使用git 首先在本地創建ssh key&#xff1b; 命令&#xff1a;ssh-keygen -t rsa -C "your_emailyouremail.com" I…

完美解決ERROR 1045 (28000): Access denied for user ‘root‘@‘localhost‘ (using password: NO)

已解決ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘ (using password: NO) 下滑查看解決方法 文章目錄 報錯問題解決思路解決方法交流 報錯問題 ERROR 1045 (28000): Access denied for user ‘root‘‘localhost‘ (using password: NO) 解決思路 對…

InfluxDB v2.x中的Flux基本概念

InfluxDB v2.x中的Flux查詢語言的核心概念主要包括以下幾個方面&#xff1a; 1. 表&#xff08;Tables&#xff09; Flux以表&#xff08;Tables&#xff09;的形式處理數據。每個表包含多行數據&#xff0c;每行數據都是一個record&#xff08;記錄&#xff09;&#xff0c;…

落日余暉映晚霞

落日余暉映晚霞&#xff0c;立于海濱&#xff0c;望夕陽余暉灑于波光粼粼之上&#xff0c;金光跳躍&#xff0c;若繁星閃爍&#xff0c;耀人心目。 海風輕拂&#xff0c;心境寧靜&#xff0c;凡塵俗務皆于此剎那消散&#xff0c;思緒萬干&#xff0c;或憶往昔點滴&#xff0c;或…

刷爆leetcode第十期

題目一 相同的樹 給你兩棵二叉樹的根節點 p 和 q &#xff0c;編寫一個函數來檢驗這兩棵樹是否相同。 如果兩個樹在結構上相同&#xff0c;并且節點具有相同的值&#xff0c;則認為它們是相同的。 首先我們要來判斷下它們的根是否相等 根相等的話是否它們的左子樹相等 是否…

在CMD中創建虛擬環境并在VSCode中使用和管理

1. 使用Conda創建虛擬環境 在CMD或Anaconda Prompt中執行以下代碼以創建一個新的虛擬環境&#xff1a; conda create -n my_env python 3.8 這樣會創建一個名為 my_env 的環境&#xff0c;并在Anaconda環境目錄下生成一個相應的文件夾&#xff0c;包含該虛擬環境所需的所有…

GD32實戰篇-雙向數控BUCK-BOOST-BOOST升壓理論基礎

本文章基于兆易創新GD32 MCU所提供的2.2.4版本庫函數開發 向上代碼兼容GD32F450ZGT6中使用 后續項目主要在下面該專欄中發布&#xff1a; https://blog.csdn.net/qq_62316532/category_12608431.html?spm1001.2014.3001.5482 感興趣的點個關注收藏一下吧! 電機驅動開發可以跳轉…

MySQL之備份與恢復(八)

備份與恢復 還原邏輯備份 如果還原的是邏輯備份而不是物理備份&#xff0c;則與使用操作系統簡單地復制文件到適當位置的方式不同&#xff0c;需要使用MySQL服務器本身來加載數據到表中。在加載導出文件之前&#xff0c;應該先花一點時間考慮文件有多大&#xff0c;需要多久加…