Để lấy danh sách tất cả các số trong Chuỗi, hãy sử dụng biểu thức chính quy '[0-9]+' với re. phương thức findall[]. [0-9] đại diện cho một biểu thức chính quy để khớp với một chữ số trong chuỗi. [0-9]+ đại diện cho các chuỗi chữ số liên tục có độ dài bất kỳ
numbers = re.findall['[0-9]+', str]
trong đó str là chuỗi mà chúng ta cần tìm các số. lại. findall[] trả về danh sách các chuỗi khớp với biểu thức chính quy
ví dụ 1. Lấy danh sách tất cả các số trong Chuỗi
Trong ví dụ sau, chúng ta sẽ lấy một chuỗi,
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
01, và tìm tất cả các số, import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
02, có trong chuỗiChương trình Python
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
Chạyđầu ra
['9', '162', '666688888']
ví dụ 2. Lấy danh sách tất cả các chữ số liên tục trong Chuỗi
Trong ví dụ sau, chúng ta sẽ lấy một chuỗi,
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
03, và tìm tất cả các số, import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
04, có trong chuỗiChương trình Python
import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
Chạyđầu ra
['2', '248', '88796451', '52']
Tóm lược
Trong hướng dẫn về Ví dụ Python này, chúng ta đã học cách lấy tất cả các số tạo thành một chuỗi dưới dạng danh sách, sử dụng Biểu thức chính quy Python, với sự trợ giúp của các chương trình ví dụ
Bài viết này mô tả cách trích xuất một chuỗi con từ một chuỗi trong Python. Bạn có thể trích xuất một chuỗi con bằng cách chỉ định vị trí và số lượng ký tự hoặc bằng các mẫu biểu thức chính quy
- Trích xuất một chuỗi con bằng cách chỉ định vị trí và số lượng ký tự
- Trích xuất một ký tự theo chỉ mục
- Trích xuất một chuỗi con bằng cách cắt
- Trích xuất dựa trên số lượng ký tự
- Trích xuất một chuỗi con với các biểu thức chính quy.
2,# print[s[5]] # IndexError: string index out of range # print[s[-6]] # IndexError: string index out of range
3# print[s[5]] # IndexError: string index out of range # print[s[-6]] # IndexError: string index out of range
- Ví dụ về mẫu biểu thức chính quy
- Các mẫu giống như ký tự đại diện
- Tham lam và không tham lam
- Trích xuất một phần của mẫu có dấu ngoặc đơn
- Khớp với bất kỳ ký tự đơn nào
- Khớp đầu/cuối của chuỗi
- Trích xuất theo nhiều mẫu
- Trường hợp không nhạy cảm
Nếu bạn muốn tìm kiếm một chuỗi để lấy vị trí của một chuỗi con đã cho hoặc thay thế một chuỗi con trong một chuỗi bằng một chuỗi khác, hãy xem bài viết sau
- Tìm kiếm một chuỗi trong Python [Kiểm tra xem có bao gồm chuỗi con không/Nhận vị trí chuỗi con]
- Thay chuỗi trong Python [replace, translate, re. phụ, lại. phụ]
Liên kết được tài trợ
Trích xuất một chuỗi con bằng cách chỉ định vị trí và số lượng ký tự
Trích xuất một ký tự theo chỉ mục
Bạn có thể lấy một ký tự ở vị trí mong muốn bằng cách chỉ định một chỉ mục trong
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
4. Các chỉ mục bắt đầu bằng # print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
5 [lập chỉ mục dựa trên số không]s = 'abcde'
print[s[0]]
# a
print[s[4]]
# e
nguồn.
Bạn có thể chỉ định vị trí lùi với giá trị âm.
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
6 đại diện cho ký tự cuối cùngimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
1nguồn.
Một lỗi được đưa ra nếu chỉ mục không tồn tại được chỉ định
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
nguồn.
Trích xuất một chuỗi con bằng cách cắt
Bạn có thể trích xuất một chuỗi con trong phạm vi
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
7 với # print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
8. Nếu bỏ qua # print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
9, phạm vi là từ đầu và nếu bỏ qua import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
60, phạm vi sẽ kết thúcimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
6nguồn.
Bạn cũng có thể sử dụng các giá trị âm
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
8nguồn.
Nếu
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
61, không có lỗi nào xuất hiện và một ký tự trống import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
62 được trích xuất['9', '162', '666688888']
1nguồn.
Ngoài phạm vi được bỏ qua
['9', '162', '666688888']
2nguồn.
Ngoài vị trí bắt đầu
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
9 và vị trí kết thúc import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
64, bạn có thể chỉ định gia số import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
65 như import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
66. Nếu import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
65 là âm, nó được trích xuất từ phía sau['9', '162', '666688888']
8nguồn.
Để biết thêm thông tin về cắt lát, hãy xem bài viết sau
- Cách cắt danh sách, chuỗi, tuple trong Python
Trích xuất dựa trên số lượng ký tự
Hàm tích hợp sẵn
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
68 trả về số lượng ký tự. Ví dụ: bạn có thể sử dụng điều này để lấy ký tự trung tâm hoặc trích xuất nửa đầu hoặc nửa sau của chuỗi bằng cách cắtLưu ý rằng bạn chỉ có thể chỉ định các giá trị số nguyên
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
69 cho chỉ mục # print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
4 và lát cắt import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
81. Phép chia cho import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
82 gây ra lỗi vì kết quả là số dấu phẩy động import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
83Ví dụ sau sử dụng phép chia số nguyên
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
84. Dấu thập phân bị cắt bớtimport re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
6nguồn.
Trích xuất một chuỗi con với các biểu thức chính quy. # print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
2, # print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
3
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
Bạn có thể sử dụng các biểu thức chính quy với mô-đun re của thư viện chuẩn
- lại — Các phép toán biểu thức chính quy — Python 3. 10. 4 tài liệu
Sử dụng
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
2 để trích xuất một chuỗi con khớp với mẫu biểu thức chính quy. Chỉ định mẫu biểu thức chính quy làm tham số đầu tiên và chuỗi đích làm tham số thứ hai['2', '248', '88796451', '52']
0nguồn.
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
88 khớp với một ký tự chữ số và import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
89 khớp với một hoặc nhiều lần lặp lại của mẫu trước đó. Do đó, ['9', '162', '666688888']
10 khớp với một hoặc nhiều chữ số liên tiếpVì dấu gạch chéo ngược
['9', '162', '666688888']
11 được sử dụng trong các chuỗi đặc biệt của biểu thức chính quy, chẳng hạn như import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
88, nên việc sử dụng chuỗi thô sẽ thuận tiện hơn bằng cách thêm ['9', '162', '666688888']
13 trước import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
62 hoặc ['9', '162', '666688888']
15- Chuỗi thô trong Python
Khi một chuỗi khớp với mẫu,
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
2 trả về một đối tượng khớp. Bạn có thể lấy phần khớp dưới dạng chuỗi ['9', '162', '666688888']
17 bằng phương thức ['9', '162', '666688888']
18 của đối tượng khớpimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
10nguồn.
Như trong ví dụ trên,
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
2 chỉ trả về đối tượng khớp của phần đầu tiên, ngay cả khi có nhiều phần khớp# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
3 trả về tất cả các phần phù hợp dưới dạng danh sách các chuỗiimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
11nguồn.
Liên kết được tài trợ
Ví dụ về mẫu biểu thức chính quy
Phần này trình bày một số ví dụ về các mẫu biểu thức chính quy với các ký tự meta/các chuỗi đặc biệt
Các mẫu giống như ký tự đại diện
['9', '162', '666688888']
21 khớp với bất kỳ ký tự đơn nào ngoại trừ một dòng mới và ['9', '162', '666688888']
22 khớp với 0 hoặc nhiều lần lặp lại của mẫu trước đóVí dụ:
['9', '162', '666688888']
23 khớp với chuỗi bắt đầu bằng ['9', '162', '666688888']
24 và kết thúc bằng ['9', '162', '666688888']
25. Vì ['9', '162', '666688888']
22 khớp với số lần lặp lại bằng 0, nên nó cũng khớp với ['9', '162', '666688888']
27import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
12nguồn.
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
89 khớp với một hoặc nhiều lần lặp lại của mẫu trước đó. ['9', '162', '666688888']
29 không khớp với ['9', '162', '666688888']
27import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
13nguồn.
['9', '162', '666688888']
81 khớp với số không hoặc một mẫu trước đó. Trong trường hợp của ['9', '162', '666688888']
82, nó khớp với ['9', '162', '666688888']
27 và chuỗi chỉ có một ký tự giữa ['9', '162', '666688888']
24 và ['9', '162', '666688888']
25import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
14nguồn.
Tham lam và không tham lam
['9', '162', '666688888']
22, import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
89 và ['9', '162', '666688888']
81 đều là những đối sánh tham lam, đối sánh càng nhiều văn bản càng tốt. ['9', '162', '666688888']
89, import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
60 và import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
61 là các đối sánh tối thiểu, không tham lam, đối sánh càng ít ký tự càng tốtimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
15nguồn.
Trích xuất một phần của mẫu có dấu ngoặc đơn
Nếu bạn đặt một phần của mẫu biểu thức chính quy trong ngoặc đơn
import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
62, bạn có thể trích xuất một chuỗi con trong phần đóimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
16nguồn.
Nếu bạn muốn khớp dấu ngoặc đơn ________ 362 dưới dạng ký tự, hãy thoát chúng bằng dấu gạch chéo ngược ________ 211
import re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
17nguồn.
Khớp với bất kỳ ký tự đơn nào
Kèm theo một chuỗi có
# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
4 khớp với bất kỳ ký tự nào trong chuỗiNếu bạn kết nối các điểm mã Unicode liên tiếp với
import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
66, chẳng hạn như import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
67, thì tất cả các ký tự giữa chúng đều bị che. Ví dụ: import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
67 khớp với bất kỳ ký tự nào trong bảng chữ cái viết thườngimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
18nguồn.
Khớp đầu/cuối của chuỗi
import re
str = 'We four guys, live at 2nd street of Malibeu. I had a cash of $248 in my pocket. I got a ticket with serial number 88796451-52.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
69 khớp với phần đầu của chuỗi và ['2', '248', '88796451', '52']
00 khớp với phần cuối của chuỗiimport re
str = 'We live at 9-162 Malibeu. My phone number is 666688888.'
#search using regex
x = re.findall['[0-9]+', str]
print[x]
19nguồn.
Trích xuất theo nhiều mẫu
Sử dụng
['2', '248', '88796451', '52']
01 để trích xuất một chuỗi con khớp với một trong nhiều mẫu. Ví dụ: đối với các mẫu biểu thức chính quy ['2', '248', '88796451', '52']
02 và ['2', '248', '88796451', '52']
03, bạn có thể viết ['2', '248', '88796451', '52']
04# print[s[5]]
# IndexError: string index out of range
# print[s[-6]]
# IndexError: string index out of range
0nguồn.
Trường hợp không nhạy cảm
Mô-đun re phân biệt chữ hoa chữ thường theo mặc định. Đặt đối số
['2', '248', '88796451', '52']
05 thành ['2', '248', '88796451', '52']
06 để thực hiện phân biệt chữ hoa chữ thường