Hai tùy chọn được đề cập bởi những người khác là tốt nhất theo ý kiến của tôi là re.split
và re.findall
:
>>> import re
>>> re.split[r'\W+', '#include "header.hpp"']
['', 'include', 'header', 'hpp', '']
>>> re.findall[r'\w+', '#include "header.hpp"']
['include', 'header', 'hpp']
Một điểm chuẩn nhanh:
>>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
Sự khác biệt về chức năng là re.split
giữ các mã thông báo trống. Điều đó thường không hữu ích cho mục đích mã thông báo, nhưng những điều sau đây phải giống hệt với giải pháp re.findall
:
>>> filter[bool, re.split[r'\W+', '#include "header.hpp"']]
['include', 'header', 'hpp']
Bài đăng này sẽ thảo luận về cách phân chia một chuỗi với các dấu phân cách trong Python.
1. Sử dụng hàm re.split[]
Một giải pháp đơn giản để phân chia một chuỗi theo các mẫu xuất hiện của mẫu là sử dụng hàm tích hợp re.split[]
. Mẫu có thể bao gồm một hoặc nhiều dấu phân cách:
⮚ Chia trên dấu phân cách đơn lẻ
Để phân chia một chuỗi với một dấu phân cách duy nhất, bạn chỉ có thể chuyển dấu phân cách đó cho hàm re.split[]
.
Ngăn chặnre if__name__=='__main__':__name__=='__main__': s='Hello,World's='Hello,World' & nbsp; & nbsp; & nbsp; & nbsp; print [res] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;res= re.split[',',s] # split with comma Đó là tất cả về việc chia một chuỗi với các phân định trong Python.print[res] # ['Hello', 'World'] |
Tải xuống & nbsp; & nbsp; mã
Làm thế nào để bạn chia một chuỗi bằng một ký tự không bảng chữ cái trong Python?
Để phân chia chuỗi trên các ký tự không phải là ký tự số, bạn có thể sử dụng ký tự đặc biệt \ w, tương đương với [^a-za-z0-9_].
Ngăn chặnre if__name__=='__main__':__name__=='__main__': s='//www.techiedelight.com's='//www.techiedelight.com' & nbsp; & nbsp; & nbsp; & nbsp; print [res] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;res= re.split['[:/ .]+',s] # split with colon, slash, space and period Đó là tất cả về việc chia một chuỗi với các phân định trong Python.print[res] # ['https', 'www', 'techiedelight', 'com'] |
Tải xuống & nbsp; & nbsp; mã
Làm thế nào để bạn chia một chuỗi bằng một ký tự không bảng chữ cái trong Python?
Để phân chia chuỗi trên các ký tự không phải là ký tự số, bạn có thể sử dụng ký tự đặc biệt \ w, tương đương với [^a-za-z0-9_].
Ngăn chặnre if__name__=='__main__':__name__=='__main__': s='//www.techiedelight.com's='//www.techiedelight.com' & nbsp; & nbsp; & nbsp; & nbsp; print [res] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;res= re.split['\W+',s] # split on non-alphanumeric characters, excluding _ Đó là tất cả về việc chia một chuỗi với các phân định trong Python.print[res] # ['https', 'www', 'techiedelight', 'com'] |
Tải xuống & nbsp; & nbsp; mã
Làm thế nào để bạn chia một chuỗi bằng một ký tự không bảng chữ cái trong Python?
To split on underscore as well, you can use the following code:
Ngăn chặnre if__name__=='__main__':__name__=='__main__': s='//www.techiedelight.com's='//www.techiedelight.com' & nbsp; & nbsp; & nbsp; & nbsp; print [res] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;res= re.split['[^a-zA-Z0-9]+',s] # split on non-alphanumeric characters & nbsp; & nbsp; & nbsp; & nbsp; print [res] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;print[res] # ['https', 'www', 'techiedelight', 'com'] |
Tải xuống & nbsp; & nbsp; mã
Đó là tất cả về việc chia một chuỗi với các phân định trong Python.
Làm thế nào để bạn chia một chuỗi bằng một ký tự không bảng chữ cái trong Python?
Ngăn chặnre if__name__=='__main__':__name__=='__main__': s='//www.techiedelight.com's='//www.techiedelight.com' & nbsp; & nbsp; & nbsp; & nbsp; res = re.findall ['\ w+', s]res= re.findall['\w+',s] & nbsp; & nbsp; & nbsp; & nbsp; print [res] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;print[res] # ['https', 'www', 'techiedelight', 'com'] |
Tải xuống & nbsp; & nbsp; mã
& nbsp; Nhân vật đặc biệt
>>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
4 là đối nghịch với ____10, tức là, nó tương đương với >>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
7. Để phân chia trên gạch dưới, bạn có thể sử dụng mã sau:The special character
>>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
4 is the opposite of >>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
0, i.e., it is equivalent to >>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
7. To split on underscore as well, you can use the following code:
Ngăn chặnre if__name__=='__main__':__name__=='__main__': s='//www.techiedelight.com's='//www.techiedelight.com' res=re.findall['[a-zA-Z0-9]+',s]res= re.findall['[a-zA-Z0-9]+',s] & nbsp; & nbsp; & nbsp; & nbsp; print [res] & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;print[res] # ['https', 'www', 'techiedelight', 'com'] |
Tải xuống & nbsp; & nbsp; mã
& nbsp; Nhân vật đặc biệt
>>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
4 là đối nghịch với ____10, tức là, nó tương đương với >>> setup = "import re; word_pattern = re.compile[r'\w+']; sep_pattern = re.compile[r'\W+']"
>>> iterations = 10**6
>>> timeit.timeit["re.findall[r'\w+', '#header foo bar!']", setup=setup, number=iterations]
3.000092029571533
>>> timeit.timeit["word_pattern.findall['#header foo bar!']", setup=setup, number=iterations]
1.5247418880462646
>>> timeit.timeit["re.split[r'\W+', '#header foo bar!']", setup=setup, number=iterations]
3.786440134048462
>>> timeit.timeit["sep_pattern.split['#header foo bar!']", setup=setup, number=iterations]
2.256173849105835
7. Để phân chia trên gạch dưới, bạn có thể sử dụng mã sau: