Hướng dẫn python check string for characters - chuỗi kiểm tra python cho các ký tự

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.6551 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']
7:

'$' 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']
8]

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

dappawitdappawitdappawit

11.8k2 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']
9 để 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.6551 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

Giả sử chuỗi của bạn là
pattern = re.compile[r'\d\$,']
if pattern.findall[s]:
    print['Found']
else
    print['Not found']
7:

Và như vậy cho các nhân vật khác.Mar 4, 2011 at 2:01

... hoặcajwood

[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']
8]15 gold badges59 silver badges102 bronze badges

3

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

dappawitdappawit

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

11.8k2 Huy hiệu vàng31 Huy hiệu bạc26 Huy hiệu đồng

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

bad_coder

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:20 gold badges39 silver badges64 bronze badges

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

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']
9 để kiểm tra chuỗi con.Eduardo Lucio

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:1 gold badge19 silver badges34 bronze badges

Đã 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']
2

example:

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

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:pythonic, is this:

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

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

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

Dòng Tên5 gold badges53 silver badges61 bronze badges

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

Điều này sẽ kiểm tra nếu các chuỗi được tạo thành từ một số kết hợp hoặc chữ số, dấu hiệu đô la và dấu phẩy. Đó có phải là những gì bạn đang tìm kiếm?
print["Non Space Special Character"]

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"
Aug 21, 2018 at 15:36

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

Ajwoodajwood2 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ự?

Phương thức chứa [] kiểm tra xem một chuỗi có chứa chuỗi các ký tự không.Trả về đúng nếu các ký tự tồn tại và sai nếu không. checks whether a string contains a sequence of characters. Returns true if the characters exist and false if not.

Làm cách nào để xác minh một chuỗi trong Python?

Trong chương trình Python, chúng ta có thể kiểm tra xem các chuỗi có bằng hay không sử dụng hàm ==, hay bằng cách sử dụng chức năng .__ EQ__ EQ__.Ví dụ: S1 = 'String' S2 = 'String' S3 = 'String' # Case Sensitive bằng kiểm tra nếu S1 == S2: In ['S1 và S2 bằng nhau.using the “==” or by using the “. __eq__” function. Example: s1 = 'String' s2 = 'String' s3 = 'string' # case sensitive equals check if s1 == s2: print['s1 and s2 are equal.

Bài Viết Liên Quan

Chủ Đề