Tôi đã đánh giá điểm này khác nhau theo Python 3.7.0 (Ipython).
TLDR
- nhanh nhất (khi biểu tượng phân chia c được biết đến): Regex được biên dịch sẵn.
- nhanh nhất (mặt khác): s.partition(c)[0].
- An toàn (tức là, khi c có thể không có trong s): phân vùng, chia.
- Không an toàn: Index, Regex.
Mã số
import string, random, re SYMBOLS = string.ascii_uppercase + string.digits SIZE = 100 def create_test_set(string_length): for _ in range(SIZE): random_string = ''.join(random.choices(SYMBOLS, k=string_length)) yield (random.choice(random_string), random_string) for string_length in (2**4, 2**8, 2**16, 2**32): print("\nString length:", string_length) print(" regex (compiled):", end=" ") test_set_for_regex = ((re.compile("(.*?)" + c).match, s) for (c, s) in test_set) %timeit [re_match(s).group() for (re_match, s) in test_set_for_regex] test_set = list(create_test_set(16)) print(" partition: ", end=" ") %timeit [s.partition(c)[0] for (c, s) in test_set] print(" index: ", end=" ") %timeit [s[:s.index(c)] for (c, s) in test_set] print(" split (limited): ", end=" ") %timeit [s.split(c, 1)[0] for (c, s) in test_set] print(" split: ", end=" ") %timeit [s.split(c)[0] for (c, s) in test_set] print(" regex: ", end=" ") %timeit [re.match("(.*?)" + c, s).group() for (c, s) in test_set]Kết quả
String length: 16 regex (compiled): 156 ns ± 4.41 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) partition: 19.3 µs ± 430 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) index: 26.1 µs ± 341 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) split (limited): 26.8 µs ± 1.26 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) split: 26.3 µs ± 835 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) regex: 128 µs ± 4.02 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) String length: 256 regex (compiled): 167 ns ± 2.7 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) partition: 20.9 µs ± 694 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) index: 28.6 µs ± 2.73 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) split (limited): 27.4 µs ± 979 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) split: 31.5 µs ± 4.86 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) regex: 148 µs ± 7.05 µs per loop (mean ± std. dev. of 7 runs, 1000 loops each) String length: 65536 regex (compiled): 173 ns ± 3.95 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) partition: 20.9 µs ± 613 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) index: 27.7 µs ± 515 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) split (limited): 27.2 µs ± 796 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) split: 26.5 µs ± 377 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) regex: 128 µs ± 1.5 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) String length: 4294967296 regex (compiled): 165 ns ± 1.2 ns per loop (mean ± std. dev. of 7 runs, 10000000 loops each) partition: 19.9 µs ± 144 ns per loop (mean ± std. dev. of 7 runs, 100000 loops each) index: 27.7 µs ± 571 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) split (limited): 26.1 µs ± 472 ns per loop (mean ± std. dev. of 7 runs, 10000 loops each) split: 28.1 µs ± 1.69 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each) regex: 137 µs ± 6.53 µs per loop (mean ± std. dev. of 7 runs, 10000 loops each)Sử dụng phương thức Split () để cắt chuỗi trước ký tự trong Python. Phương thức chia () chia một chuỗi vào một danh sách. Sau khi liệt kê vào danh sách chỉ mất 0 giá trị được lập chỉ mục. Mã ví dụ đơn giản đã cắt tất cả các ký tự của một chuỗi trước một và một trong các python. Chỉ cần sử dụng chức năng phân chia. Nó trả về một danh sách và giữ phần tử đầu tiên: Output::
Sử dụng str.partition () để lấy phần của chuỗi trước khi xuất hiện đầu tiên của một ký tự cụ thể
Chuỗi phân vùng () Phương thức trả về tuple. Trong ví dụ cắt giảm sự xuất hiện đầu tiên của một nhân vật và một người khác.and” character.
s = "Python and data science" res = s.partition('and')[0] print(res)Đầu ra: Python: Python
Hãy bình luận nếu bạn có bất kỳ nghi ngờ và đề xuất nào về chủ đề chuỗi char Python này.
Lưu ý: IDE: & NBSP; Pycharm & NBSP; 2021.3.3 (Phiên bản cộng đồng) IDE: PyCharm 2021.3.3 (Community Edition)
Windows 10
Python 3.10.1
Tất cả & nbsp; ví dụ python & nbsp; là trong & nbsp; Python & nbsp; 3, vì vậy có thể khác với các phiên bản Python 2 hoặc nâng cấp. Python Examples are in Python 3, so Maybe its different from python 2 or upgraded versions.
Bằng cấp về Khoa học máy tính và Kỹ sư: Nhà phát triển ứng dụng và có nhiều ngôn ngữ lập trình kinh nghiệm. Sự nhiệt tình cho công nghệ và thích học kỹ thuật.