Số trích xuất python từ chuỗi

Để 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ỗi

Chươ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ỗi

Chươ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.
    # 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
  • 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ù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]
1

nguồ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ú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]
6

nguồ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]
8

nguồ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']
1

nguồn.

Ngoài phạm vi được bỏ qua

['9', '162', '666688888']
2

nguồ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']
8

nguồ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ắt

Lư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]
83

Ví 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ớt

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]
6

nguồ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

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']
0

nguồ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ếp

Vì 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ớp

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]
10

nguồ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ỗ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]
11

nguồ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']
27

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]
12

nguồ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']
27

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]
13

nguồ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']
25

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]
14

nguồ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ố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]
15

nguồ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]
16

nguồ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]
17

nguồ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ỗi

Nế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ườ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]
18

nguồ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ỗ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]
19

nguồ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
0

nguồ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

Chủ Đề