Hướng dẫn how do you split a string before a specific character in python? - làm thế nào để bạn tách một chuỗi trước một ký tự cụ thể trong python?

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:

s = "Python and data science"

res = s.split("and")[0]
print(res)

Output::

Hướng dẫn how do you split a string before a specific character in python? - làm thế nào để bạn tách một chuỗi trước một ký tự cụ thể trong python?

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.

Hướng dẫn how do you split a string before a specific character in python? - làm thế nào để bạn tách một chuỗi trước một ký tự cụ thể trong python?

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.

Làm thế nào để bạn chia một chuỗi ở một ký tự nhất định?

Để phân chia một chuỗi với ký tự cụ thể là dấu phân cách trong java, phương thức call split () trên đối tượng chuỗi và chuyển ký tự cụ thể làm đối số cho phương thức Split ().Phương thức trả về một mảng chuỗi với các phân tách dưới dạng các phần tử trong mảng.call split() method on the string object, and pass the specific character as argument to the split() method. The method returns a String Array with the splits as elements in the array.

Làm cách nào để trích xuất một phần cụ thể của chuỗi trong Python?

Bạn có thể trích xuất một chuỗi con trong phạm vi bắt đầustart <= x < stop with [start:step] . If start is omitted, the range is from the beginning, and if end is omitted, the range is to the end. You can also use negative values. If start > end , no error is raised and an empty character '' is extracted.

Làm thế nào để bạn chia một từ trước đây trong Python?

Phương thức phân chia chuỗi python () Phương thức phân tách một chuỗi thành một danh sách.Bạn có thể chỉ định phân tách, dấu phân cách mặc định là bất kỳ khoảng trắng nào.Lưu ý: Khi MaxSplit được chỉ định, danh sách sẽ chứa số lượng phần tử được chỉ định cộng với một.The split() method splits a string into a list. You can specify the separator, default separator is any whitespace. Note: When maxsplit is specified, the list will contain the specified number of elements plus one.

Làm thế nào để bạn có được một chuỗi trước một chuỗi con cụ thể?

Sử dụng phương thức Subring () để có được chuỗi con trước một ký tự cụ thể, ví dụ:const trước = str.chuỗi con (0, str. indexof ('_'));.Phương thức chuỗi con sẽ trả về một chuỗi mới chứa phần của chuỗi trước ký tự được chỉ định., e.g. const before = str. substring(0, str. indexOf('_')); . The substring method will return a new string containing the part of the string before the specified character.