Hướng dẫn extract data from string python - trích xuất dữ liệu từ chuỗi python

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 với 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ự bằng 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 thông thường:
    # 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ụ mẫu biểu thức thông thường
    • 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 với dấu ngoặc đơn
    • Khớp với bất kỳ ký tự nào
    • Khớp với đầu/kết thúc của chuỗi
    • Trích xuất bởi nhiều mẫu
    • Case-insensitive

Nếu bạn muốn tìm kiếm một chuỗi để có được 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 một bộ nền không/nhận vị trí phụ)
  • Thay thế các chuỗi trong python (thay thế, dịch, re.sub, re.sub)

Trích xuất một chuỗi con bằng cách chỉ định vị trí và số lượng ký tự

Bạn có thể nhận được 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 không).

s = 'abcde'

print(s[0])
# a

print(s[4])
# e

Bạn có thể chỉ định một vị trí lạc hậu với các 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 nhân vật cuối cùng.

print(s[-1])
# e

print(s[-5])
# a

Một lỗi được nêu ra nếu chỉ số 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

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
# print(s[5])
# IndexError: string index out of range

# print(s[-6])
# IndexError: string index out of range
9 bị bỏ qua, phạm vi là từ đầu và nếu
s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
0 bị bỏ qua, phạm vi sẽ đến cuối cùng.

s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde

Bạn cũng có thể sử dụng các giá trị âm.

print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde

Nếu

s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
1, không có lỗi nào được nêu ra và một ký tự trống
s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
2 được trích xuất.

print(s[3:1])
# 

print(s[3:1] == '')
# True

Ngoài phạm vi bị bỏ qua.

print(s[-100:100])
# abcde

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í cuối
s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
4, bạn có thể chỉ định mức tăng
s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
5 như
s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
6. Nếu
s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
5 là âm, nó được trích xuất từ ​​phía sau.

print(s[1:4:2])
# bd

print(s[::2])
# ace

print(s[::3])
# ad

print(s[::-1])
# edcba

print(s[::-2])
# eca

Để biết thêm thông tin về việc cắt, xem bài viết sau.

  • Cách cắt một danh sách, chuỗi, tuple trong Python

Hàm tích hợp

s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
8 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 thứ hai 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

s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
9 cho chỉ mục
# print(s[5])
# IndexError: string index out of range

# print(s[-6])
# IndexError: string index out of range
4 và cắt
print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
1. Phân chia theo
print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
2 gây ra lỗi vì kết quả là số điểm nổi
print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
3.

Ví dụ sau sử dụng Phân chia số nguyên

print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
4. Điểm thập phân bị cắt ngắn.

s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi

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 tiêu chuẩn.

  • Re - Hoạt động biểu thức thông thường - Tài liệu Python 3.10.4

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 phù hợp với mẫu biểu thức chính quy. Chỉ định mẫu biểu thức chính quy là tham số đầu tiên và chuỗi đích là tham số thứ hai.

import re

s = '012-3456-7890'

print(re.search(r'\d+', s))
# <re.Match object; span=(0, 3), match='012'>

print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
6 khớp với ký tự chữ số và
print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
7 khớp với một hoặc nhiều lần lặp lại của mẫu trước. Do đó,
print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
8 khớp với một hoặc nhiều chữ số liên tiếp.

Vì Backslash

print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
9 được sử dụng trong các chuỗi đặc biệt biểu thức thông thường như
print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
6, nên việc sử dụng một chuỗi thô là thuận tiện bằng cách thêm
print(s[3:1])
# 

print(s[3:1] == '')
# True
1 trước
s = 'abcde'

print(s[1:3])
# bc

print(s[:3])
# abc

print(s[1:])
# bcde
2 hoặc
print(s[3:1])
# 

print(s[3:1] == '')
# True
3.

  • Dây 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 sẽ trả về một đối tượng khớp. Bạn có thể nhận phần phù hợp dưới dạng chuỗi
print(s[3:1])
# 

print(s[3:1] == '')
# True
5 bằng phương thức
print(s[3:1])
# 

print(s[3:1] == '')
# True
6 của đối tượng khớp.

print(s[-1])
# e

print(s[-5])
# a
0

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 phù hợ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 như một danh sách các chuỗi.

print(s[-1])
# e

print(s[-5])
# a
1

Ví dụ mẫu biểu thức thông thường

Các mẫu giống như ký tự đại diện

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 với dấu ngoặc đơn

print(s[-1])
# e

print(s[-5])
# a
2

Khớp với bất kỳ ký tự nào

print(s[-1])
# e

print(s[-5])
# a
3

Khớp với đầu/kết thúc của chuỗi

print(s[-1])
# e

print(s[-5])
# a
4

Tham lam và không tham lam

Trích xuất một phần của mẫu với dấu ngoặc đơn

print(s[-1])
# e

print(s[-5])
# a
5

Nếu bạn đặt một phần của một mẫu biểu thức thông thường trong ngoặc đơn

s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
0, bạn có thể trích xuất một chuỗi con trong phần đó.

print(s[-1])
# e

print(s[-5])
# a
6

Nếu bạn muốn phù hợp với dấu ngoặc đơn

s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
0 với tư cách là nhân vật, hãy thoát chúng bằng dấu gạch chéo ngược
print(s[-4:-2])
# bc

print(s[:-2])
# abc

print(s[-4:])
# bcde
9.

print(s[-1])
# e

print(s[-5])
# a
7

Khớp với bất kỳ ký tự nào

Việc kèm theo một chuỗi với

# 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ỳ một trong các ký tự trong chuỗi.

Nếu bạn kết nối các điểm mã Unicode liên tiếp với

s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
4, chẳng hạn như
s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
5, tất cả các ký tự giữa chúng đều được bảo hiểm.Ví dụ,
s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
5 khớp với bất kỳ một ký tự nào của bảng chữ cái viết thường.

print(s[-1])
# e

print(s[-5])
# a
8

Khớp với đầu/kết thúc của chuỗi

s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
7 khớp với sự khởi đầu của chuỗi và
s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
8 khớp với phần cuối của chuỗi.

print(s[-1])
# e

print(s[-5])
# a
9

Sử dụng

s = 'abcdefghi'

print(len(s))
# 9

# print(s[len(s) / 2])
# TypeError: string indices must be integers

print(s[len(s) // 2])
# e

print(s[:len(s) // 2])
# abcd

print(s[len(s) // 2:])
# efghi
9 để trích xuất một chuỗi con phù hợp với một trong nhiều mẫu.Ví dụ: đối với các mẫu biểu thức thông thường
import re

s = '012-3456-7890'

print(re.search(r'\d+', s))
# <re.Match object; span=(0, 3), match='012'>
0 và
import re

s = '012-3456-7890'

print(re.search(r'\d+', s))
# <re.Match object; span=(0, 3), match='012'>
1, bạn có thể viết
import re

s = '012-3456-7890'

print(re.search(r'\d+', s))
# <re.Match object; span=(0, 3), match='012'>
2.

# print(s[5])
# IndexError: string index out of range

# print(s[-6])
# IndexError: string index out of range
0

Case-insensitive

Mô-đun RE là nhạy cảm trường hợp theo mặc định.Đặt đối số

import re

s = '012-3456-7890'

print(re.search(r'\d+', s))
# <re.Match object; span=(0, 3), match='012'>
3 thành
import re

s = '012-3456-7890'

print(re.search(r'\d+', s))
# <re.Match object; span=(0, 3), match='012'>
4 để thực hiện không nhạy cảm trường hợp.

# print(s[5])
# IndexError: string index out of range

# print(s[-6])
# IndexError: string index out of range
1