Hướng dẫn how to split a list between letters and digits python - cách tách danh sách giữa các chữ cái và chữ số python

import re
s='abcd2343 abw34324 abc3243-23A'
re.split('(\d+)',s)

> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']

Hoặc, nếu bạn muốn chia tách trong lần xuất hiện đầu tiên của một chữ số:

re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']

  • \d+ khớp với 1 chữ số hoặc nhiều hơn.
  • re.findall('\d*\D+',s)
    > ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
    
    0 khớp với các chữ số 0-hoặc-more theo sau là 1-hoặc-more không có chữ số.
  • re.findall('\d*\D+',s)
    > ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
    
    1 khớp với các chữ số 1-hoặc-more hoặc 1-hoặc không có chữ số.

Tham khảo các tài liệu để biết thêm về cú pháp Regex của Python.


re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
2 sẽ phân chia chuỗi
re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
3 bằng cách sử dụng
re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
4 làm dấu phân cách. Nếu
re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
4 bắt đầu và kết thúc bằng dấu ngoặc đơn (để trở thành "nhóm bắt giữ"), thì
re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
6 cũng sẽ trả về các chuỗi con được khớp bởi
re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
4. Ví dụ, so sánh:

re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups

Ngược lại,

re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
8 chỉ trả về các phần của
re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
3 khớp với
re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
4:

re.findall('\d+', s)
> ['2343', '34324', '3243', '23']

Do đó, nếu

re.findall('\d*\D+',s)
> ['abcd', '2343 abw', '34324 abc', '3243-', '23A']
3 kết thúc bằng một chữ số, bạn có thể tránh kết thúc bằng một chuỗi trống bằng cách sử dụng
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
2 thay vì
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
3:

s='abcd2343 abw34324 abc3243-23A 123'

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A ', '123', '']

re.findall('\d+|\D+', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A ', '123']

Xây dựng vấn đề: Cho một chuỗi các chữ cái và số. Cách chia chuỗi thành chuỗi con của các chữ cái hoặc số bằng cách sử dụng ranh giới giữa chữ cái và số và ngược lại. Given a string of letters and numbers. How to split the string into substrings of either letters or numbers by using the boundary between a letter and a number and vice versa.

Ví dụ: Hãy xem các ví dụ sau về những gì bạn muốn thực hiện.: Have a look at the following examples of what you want to accomplish.

'111A222B333C'     – ->    ['111', 'A', '222', 'B', '333', 'C']
'Finxter42'        – ->    ['Finxter', '42']
'Hello world'     – ->    ['Hello', ' world']

Làm thế nào để phân chia một chuỗi giữa các số và chữ cái?

Phương pháp 1: Re.Split ()

Phương pháp

re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
4 khớp với tất cả các lần xuất hiện của
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
5 trong
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
6 và chia chuỗi dọc theo các trận đấu dẫn đến một danh sách các chuỗi giữa các trận đấu. Ví dụ:
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
7 kết quả trong danh sách các chuỗi
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
8.

# Method 1: re.split()
import re
s = '111A222B333C'
res = re.split('(\d+)', s)
print(res)
# ['', '111', 'A', '222', 'B', '333', ' C']

Nhân vật đặc biệt

re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
9 khớp với bất kỳ chữ số nào từ 0 đến 9. Bằng cách sử dụng số chữ số tối đa làm dấu phân cách, bạn chia theo ranh giới từ chữ số. Lưu ý rằng bạn không tiêu thụ ký tự chia bằng cách bọc nó thành một nhóm phù hợp bằng cách sử dụng dấu ngoặc đơn
re.findall('\d+', s)
> ['2343', '34324', '3243', '23']
0. Nếu bạn để lại dấu ngoặc đơn, nó sẽ tiêu thụ các con số và kết quả sẽ không chứa bất kỳ số liên tiếp nào.

Phương pháp 2: Re.Findall ()

Phương pháp

re.findall('\d+', s)
> ['2343', '34324', '3243', '23']
1 quét
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
6 từ trái sang phải, tìm kiếm tất cả các trận đấu không chồng chéo của
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
5. Nó trả về một danh sách các chuỗi theo thứ tự phù hợp khi quét chuỗi từ trái sang phải.left to right, searching for all non-overlapping matches of the
re.split('\d+', s)
> ['abcd', ' abw', ' abc', '-', 'A']   # <-- just the non-matching parts

re.split('(\d+)', s)
> ['abcd', '2343', ' abw', '34324', ' abc', '3243', '-', '23', 'A']  # <-- both the non-matching parts and the captured groups
5. It returns a list of strings in the matching order when scanning the string from left to right.

# Method 2: re.findall()
import re
s = '111A222B333C'

res = re.findall('(\d+|[A-Za-z]+)', s)

print(res)
# ['111', 'A', '222', 'B', '333', 'C']

Phương pháp 3: itertools.groupby ()

# Method 3: itertools.groupby()
from itertools import groupby
s = '111A222B333C'

res = [''.join(g) for _, g in groupby(s, str.isalpha)]
print(res)
# ['111', 'A', '222', 'B', '333', 'C']
  • Hàm
    re.findall('\d+', s)
    > ['2343', '34324', '3243', '23']
    
    4 tạo ra một trình lặp trả về các bộ dữ liệu
    re.findall('\d+', s)
    > ['2343', '34324', '3243', '23']
    
    5 được nhóm theo từng giá trị
    re.findall('\d+', s)
    > ['2343', '34324', '3243', '23']
    
    6. Chúng tôi sử dụng hàm
    re.findall('\d+', s)
    > ['2343', '34324', '3243', '23']
    
    7 làm chức năng chính.
  • Hàm
    re.findall('\d+', s)
    > ['2343', '34324', '3243', '23']
    
    7 trả về
    re.findall('\d+', s)
    > ['2343', '34324', '3243', '23']
    
    9 nếu chuỗi chỉ bao gồm các ký tự chữ cái.

Video liên quan re.split ()

Python Regex Split - Hướng dẫn hoàn chỉnh

Lập trình viên hài hước

Chỉ có 10 loại người trên thế giới này: những người biết nhị phân và những người don don.👩🧔‍♂ ~~~
👩🧔‍♂️
~~~

Có 10 loại người trên thế giới. Những người hiểu trinary, những người don don và những người nhầm lẫn nó với nhị phân.


👩🧔‍♂

Đi đâu từ đây?

Đủ lý thuyết. Hãy để có được một số thực hành!

Các lập trình viên được trả tiền sáu con số và hơn thế nữa vì họ có thể giải quyết các vấn đề hiệu quả hơn bằng cách sử dụng trí thông minh máy móc và tự động hóa.

Để trở nên thành công hơn trong việc mã hóa, giải quyết nhiều vấn đề thực sự hơn cho người thực. Đó là cách bạn đánh bóng các kỹ năng bạn thực sự cần trong thực tế. Rốt cuộc, những gì mà việc sử dụng lý thuyết học tập mà không ai cần?

Bạn xây dựng các kỹ năng mã hóa có giá trị cao bằng cách làm việc trên các dự án mã hóa thực tế!

Bạn có muốn ngừng học hỏi với các dự án đồ chơi và tập trung vào các dự án mã thực tế kiếm tiền cho bạn và giải quyết các vấn đề thực sự cho mọi người?

Nếu câu trả lời của bạn là có !, Hãy xem xét việc trở thành một nhà phát triển tự do Python! Đó là cách tốt nhất để tiếp cận nhiệm vụ cải thiện các kỹ năng trăn của bạn, ngay cả khi bạn là người mới bắt đầu hoàn toàn.YES!, consider becoming a Python freelance developer! It’s the best way of approaching the task of improving your Python skills—even if you are a complete beginner.

Nếu bạn chỉ muốn tìm hiểu về cơ hội làm việc tự do, vui lòng xem hội thảo trên web miễn phí của tôi Làm thế nào để xây dựng kỹ năng thu nhập cao của bạn Python và tìm hiểu cách tôi phát triển kinh doanh mã hóa của mình trực tuyến và làm thế nào bạn có thể, từ sự thoải mái của bạn riêng nhà.

Tham gia hội thảo trên web miễn phí ngay bây giờ!

Hướng dẫn how to split a list between letters and digits python - cách tách danh sách giữa các chữ cái và chữ số python

Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.

Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer (Nostarch 2020), đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.

Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.