Hướng dẫn how do i check if a string contains a specific character in python? - làm cách nào để kiểm tra xem một chuỗi có chứa một ký tự cụ thể trong python không?

231

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Làm thế nào tôi có thể kiểm tra xem một chuỗi có một số ký tự cụ thể trong đó bằng Python 2?

Ví dụ: cho chuỗi sau:

Những tên tội phạm đã đánh cắp 1.000.000 đô la trong trang sức.

Làm cách nào để phát hiện nếu nó có dấu hiệu đô la ["$"], dấu phẩy [","] và số?

Dòng Tên

1.6251 Huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu đồng1 gold badge31 silver badges39 bronze badges

Đã hỏi ngày 4 tháng 3 năm 2011 lúc 1:47Mar 4, 2011 at 1:47

3

Giả sử chuỗi của bạn là

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
6:

'$' in s        # found
'$' not in s    # not found

# original answer given, but less Pythonic than the above...
s.find['$']==-1 # not found
s.find['$']!=-1 # found

Và như vậy cho các nhân vật khác.

... hoặc

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']

... hoặc

chars = set['0123456789$,']
if any[[c in chars] for c in s]:
    print['Found']
else:
    print['Not Found']

[Chỉnh sửa: Đã thêm câu trả lời

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
7]

Đã trả lời ngày 4 tháng 3 năm 2011 lúc 2:07Mar 4, 2011 at 2:07

dappawitdappawitdappawit

11.7K2 Huy hiệu vàng31 Huy hiệu bạc26 Huy hiệu đồng2 gold badges31 silver badges26 bronze badges

7

Người dùng Jochen Ritzel đã nói điều này trong một bình luận cho câu trả lời cho câu hỏi này từ người dùng Dappawit. Nó sẽ hoạt động:

['1' in var] and ['2' in var] and ['3' in var] ...

'1', '2', v.v ... nên được thay thế bằng các ký tự bạn đang tìm kiếm.

Xem trang này trong tài liệu Python 2.7 để biết một số thông tin về các chuỗi, bao gồm về việc sử dụng toán tử

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
8 để kiểm tra chuỗi con.

Cập nhật: Điều này làm công việc tương tự như đề xuất trên của tôi với ít lặp lại hơn: This does the same job as my above suggestion with less repetition:

# When looking for single characters, this checks for any of the characters...
# ...since strings are collections of characters
any[i in '' for i in '123']
# any[i in 'a' for i in '123'] -> False
# any[i in 'b3' for i in '123'] -> True

# And when looking for subsrings
any[i in '' for i in ['11','22','33']]
# any[i in 'hello' for i in ['18','36','613']] -> False
# any[i in '613 mitzvahs' for i in ['18','36','613']] ->True

Đã trả lời ngày 4 tháng 3 năm 2011 lúc 2:39Mar 4, 2011 at 2:39

AbbafeiabbafeiAbbafei

3.0283 huy hiệu vàng26 Huy hiệu bạc24 Huy hiệu đồng3 gold badges26 silver badges24 bronze badges

2

So sánh nhanh thời gian để đáp ứng với bài viết của Abbafei:

import timeit

def func1[]:
    phrase = 'Lucky Dog'
    return any[i in 'LD' for i in phrase]

def func2[]:
    phrase = 'Lucky Dog'
    if ['L' in phrase] or ['D' in phrase]:
        return True
    else:
        return False

if __name__ == '__main__': 
    func1_time = timeit.timeit[func1, number=100000]
    func2_time = timeit.timeit[func2, number=100000]
    print['Func1 Time: {0}\nFunc2 Time: {1}'.format[func1_time, func2_time]]

Output:

Func1 Time: 0.0737484362111
Func2 Time: 0.0125144964371

Vì vậy, mã nhỏ gọn hơn với bất kỳ, nhưng nhanh hơn với điều kiện.

EDIT: TL; DR-Đối với các chuỗi dài, nếu-sau đó vẫn nhanh hơn nhiều so với bất kỳ chuỗi nào! TL;DR -- For long strings, if-then is still much faster than any!

Tôi quyết định so sánh thời gian cho một chuỗi ngẫu nhiên dài dựa trên một số điểm hợp lệ được nêu trong các bình luận:

# Tested in Python 2.7.14

import timeit
from string import ascii_letters
from random import choice

def create_random_string[length=1000]:
    random_list = [choice[ascii_letters] for x in range[length]]
    return ''.join[random_list]

def function_using_any[phrase]:
    return any[i in 'LD' for i in phrase]

def function_using_if_then[phrase]:
    if ['L' in phrase] or ['D' in phrase]:
        return True
    else:
        return False

if __name__ == '__main__':
    random_string = create_random_string[length=2000]
    func1_time = timeit.timeit[stmt="function_using_any[random_string]",
                               setup="from __main__ import function_using_any, random_string",
                               number=200000]
    func2_time = timeit.timeit[stmt="function_using_if_then[random_string]",
                               setup="from __main__ import function_using_if_then, random_string",
                               number=200000]
    print['Time for function using any: {0}\nTime for function using if-then: {1}'.format[func1_time, func2_time]]

Output:

Time for function using any: 0.1342546
Time for function using if-then: 0.0201827

If-thì gần như là một thứ tự nhanh hơn bất kỳ thứ tự nào!

Đã trả lời ngày 14 tháng 7 năm 2015 lúc 17:11Jul 14, 2015 at 17:11

Dòng TênJesuisme

1.6251 Huy hiệu vàng31 Huy hiệu bạc39 Huy hiệu đồng1 gold badge31 silver badges39 bronze badges

3

Đã hỏi ngày 4 tháng 3 năm 2011 lúc 1:47

import re

s1 = 'Testing string'
s2 = '1234,12345$'

regex = re.compile['[0-9,$]+$']

if [ regex.match[s1] ]:
   print "s1 matched"
else:
   print "s1 didn't match"

if [ regex.match[s2] ]:
   print "s2 matched"
else:
   print "s2 didn't match"

Giả sử chuỗi của bạn là

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
6:Mar 4, 2011 at 2:01

Và như vậy cho các nhân vật khác.ajwood

... hoặc15 gold badges58 silver badges100 bronze badges

3

[Chỉnh sửa: Đã thêm câu trả lời

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
7]=D

Đã trả lời ngày 4 tháng 3 năm 2011 lúc 2:07

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
0

dappawitdappawit

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
1

bad_coder

11.7K2 Huy hiệu vàng31 Huy hiệu bạc26 Huy hiệu đồng19 gold badges38 silver badges62 bronze badges

Người dùng Jochen Ritzel đã nói điều này trong một bình luận cho câu trả lời cho câu hỏi này từ người dùng Dappawit. Nó sẽ hoạt động:Dec 29, 2020 at 15:27

'1', '2', v.v ... nên được thay thế bằng các ký tự bạn đang tìm kiếm.Eduardo Lucio

Xem trang này trong tài liệu Python 2.7 để biết một số thông tin về các chuỗi, bao gồm về việc sử dụng toán tử

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
8 để kiểm tra chuỗi con.1 gold badge19 silver badges33 bronze badges

Cập nhật: Điều này làm công việc tương tự như đề xuất trên của tôi với ít lặp lại hơn:

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
2

Đã trả lời ngày 4 tháng 3 năm 2011 lúc 2:39

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
3

Abbafeiabbafei

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
4

3.0283 huy hiệu vàng26 Huy hiệu bạc24 Huy hiệu đồng

So sánh nhanh thời gian để đáp ứng với bài viết của Abbafei:Mar 16, 2021 at 18:19

Vì vậy, mã nhỏ gọn hơn với bất kỳ, nhưng nhanh hơn với điều kiện.Felix

EDIT: TL; DR-Đối với các chuỗi dài, nếu-sau đó vẫn nhanh hơn nhiều so với bất kỳ chuỗi nào!2 bronze badges

pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
5

Tôi quyết định so sánh thời gian cho một chuỗi ngẫu nhiên dài dựa trên một số điểm hợp lệ được nêu trong các bình luận:
print["Non Space Special Character"]

If-thì gần như là một thứ tự nhanh hơn bất kỳ thứ tự nào!Aug 21, 2018 at 15:36

Đã trả lời ngày 14 tháng 7 năm 2015 lúc 17:11Nagaraj

Dòng Tên2 gold badges5 silver badges8 bronze badges

2

Làm thế nào để bạn kiểm tra xem một chuỗi có chứa một ký tự cụ thể trong Python không?

Phương thức 3: Kiểm tra một chuỗi cho một ký tự cụ thể bằng cách sử dụng find [] Chức năng find [] Chure trả về lần xuất hiện đầu tiên của giá trị được chỉ định.using find[] The string find[] function returns the first occurrence of specified value.

Làm cách nào để kiểm tra xem một chuỗi có chứa một ký tự cụ thể không?

Phương thức chuỗi Java chứa [] được sử dụng để kiểm tra xem tập hợp các ký tự cụ thể có phải là một phần của chuỗi đã cho hay không.Nó trả về một giá trị boolean true nếu các ký tự được chỉ định là chuỗi con của một chuỗi đã cho và trả về sai.Nó có thể được sử dụng trực tiếp bên trong câu lệnh if. is used to check whether the specific set of characters are part of the given string or not. It returns a boolean value true if the specified characters are substring of a given string and returns false otherwise. It can be directly used inside the if statement.

Bài Viết Liên Quan

Chủ Đề