Hướng dẫn how do i identify a specific letter in python? - làm cách nào để xác định một chữ cái cụ thể trong python?

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.0183 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.0183 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 để tôi tìm thấy một lá thư cụ thể trong Python?

Chuỗi tìm [] trong python chỉ cần gọi phương thức trên đối tượng chuỗi để tìm kiếm một chuỗi, như vậy: obj.find [tìm kiếm tìm kiếm].Phương thức Find [] tìm kiếm một chuỗi truy vấn và trả về vị trí ký tự nếu được tìm thấy.Nếu chuỗi không được tìm thấy, nó sẽ trả về -1.obj. find[“search”]. The find[] method searches for a query string and returns the character position if found. If the string is not found, it returns -1.

Làm thế nào để tôi tìm thấy một nhân vật cụ thể trong danh sách Python?

Để tìm chỉ mục của một phần tử danh sách trong Python, hãy sử dụng phương thức Index [] tích hợp.Để tìm chỉ mục của một ký tự trong một chuỗi, hãy sử dụng phương thức index [] trên chuỗi.Đây là câu trả lời nhanh chóng.use the built-in index[] method. To find the index of a character in a string, use the index[] method on the string. This is the quick answer.

Làm cách nào để tìm thấy một chữ cái nhất định trong một chuỗi?

Bạn có thể tìm kiếm một chữ cái cụ thể trong một chuỗi bằng phương thức indexof [] của lớp chuỗi.Phương thức này trả về một chỉ mục vị trí của một từ trong chuỗi nếu tìm thấy.Nếu không thì nó trả về -1.using the indexOf[] method of the String class. This method which returns a position index of a word within the string if found. Otherwise it returns -1.

Bài Viết Liên Quan

Chủ Đề