114
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.
Việc triển khai Python thuần túy tốt nhất để kiểm tra xem một chuỗi có chứa bất kỳ chữ cái nào từ bảng chữ cái không?
string_1 = "[555].555-5555"
string_2 = "[555] 555 - 5555 ext. 5555
Trong đó
re.search['[a-zA-Z]', the_string]
3 sẽ trả lại re.search['[a-zA-Z]', the_string]
4 vì không có chữ cái trong bảng chữ cái trong đó và re.search['[a-zA-Z]', the_string]
5 sẽ trả lại re.search['[a-zA-Z]', the_string]
6 vì có thư.
Jbernardo
31.2K10 Huy hiệu vàng87 Huy hiệu bạc112 Huy hiệu đồng10 gold badges87 silver badges112 bronze badges
hỏi ngày 31 tháng 1 năm 2012 lúc 0:29Jan 31, 2012 at 0:29
4
Regex nên là một cách tiếp cận nhanh chóng:
re.search['[a-zA-Z]', the_string]
Đã trả lời ngày 31 tháng 1 năm 2012 lúc 0:42Jan 31, 2012 at 0:42
JbernardojbernardoJBernardo
31.2K10 Huy hiệu vàng87 Huy hiệu bạc112 Huy hiệu đồng10 gold badges87 silver badges112 bronze badges
9
hỏi ngày 31 tháng 1 năm 2012 lúc 0:29
>>> string_1 = "[555].555-5555"
>>> string_2 = "[555] 555 - 5555 ext. 5555"
>>> any[c.isalpha[] for c in string_1]
False
>>> any[c.isalpha[] for c in string_2]
True
Regex nên là một cách tiếp cận nhanh chóng:Jan 31, 2012 at 0:31
Đã trả lời ngày 31 tháng 1 năm 2012 lúc 0:42DSM
Jbernardojbernardo62 gold badges574 silver badges481 bronze badges
8
Bạn nghĩ thế nào về:
Đã trả lời ngày 31 tháng 1 năm 2012 lúc 0:31
>>> z = "[555] 555 - 5555 ext. 5555"
>>> z.isupper[] or z.islower[]
True
DSMDSM
>>> z= "[555].555-5555"
>>> z.isupper[] or z.islower[]
False
>>>
328K62 Huy hiệu vàng574 Huy hiệu bạc481 Huy hiệu Đồng
Bạn có thể sử dụng
re.search['[a-zA-Z]', the_string]
7 trên chuỗi của mình để xem nó có chứa một số chữ cái viết thường không [trong số các ký tự khác]. re.search['[a-zA-Z]', the_string]
8 Nó với re.search['[a-zA-Z]', the_string]
9 để kiểm tra xem có chứa một số chữ cái viết hoa:
Dưới đây: Các chữ cái trong chuỗi: Kiểm tra mang lại đúng
Dưới đây: Không có chữ cái trong chuỗi: Kiểm tra mang lại sai.3 gold badges29 silver badges38 bronze badges
Không được trộn lẫn với
>>> string_1 = "[555].555-5555"
>>> string_2 = "[555] 555 - 5555 ext. 5555"
>>> any[c.isalpha[] for c in string_1]
False
>>> any[c.isalpha[] for c in string_2]
True
0, chỉ trả lại re.search['[a-zA-Z]', the_string]
6 nếu tất cả các ký tự là chữ cái, đó không phải là thứ bạn muốn.Mar 24, 2017 at 15:08
6
Lưu ý rằng câu trả lời của Barm hoàn thành của tôi một cách độc đáo, vì của tôi không xử lý tốt trường hợp hỗn hợp.
His approach will work, but only if the text contains purely lower- or uppercase letters:
>>> text = "[555].555-5555 extA. 5555"
>>> text.islower[]
False
>>> text.isupper[]
False
John Strood
>>> string1 = "[555].555-5555 extA. 5555"
>>> string2 = '555 [234] - 123.32 21'
>>> string1.upper[].isupper[]
True
>>> string2.upper[].isupper[]
False
Dưới đây: Các chữ cái trong chuỗi: Kiểm tra mang lại đúng
Dưới đây: Không có chữ cái trong chuỗi: Kiểm tra mang lại sai.3 gold badges29 silver badges38 bronze badges
Không được trộn lẫn với
>>> string_1 = "[555].555-5555"
>>> string_2 = "[555] 555 - 5555 ext. 5555"
>>> any[c.isalpha[] for c in string_1]
False
>>> any[c.isalpha[] for c in string_2]
True
0, chỉ trả lại re.search['[a-zA-Z]', the_string]
6 nếu tất cả các ký tự là chữ cái, đó không phải là thứ bạn muốn.Nov 23, 2017 at 10:40
Lưu ý rằng câu trả lời của Barm hoàn thành của tôi một cách độc đáo, vì của tôi không xử lý tốt trường hợp hỗn hợp.Barm
John Strood4 silver badges11 bronze badges
1.7593 huy hiệu vàng29 Huy hiệu bạc38 Huy hiệu đồng
import re
print re.search['[a-zA-Z]+',string]
Đã trả lời ngày 24 tháng 3 năm 2017 lúc 15:08Jan 31, 2012 at 0:50
Tôi thích câu trả lời được cung cấp bởi @jean-françois-fabre, nhưng nó không đầy đủ. Cách tiếp cận của anh ấy sẽ hoạt động, nhưng chỉ khi văn bản chứa các chữ cái hoàn toàn thấp hơn hoặc chữ hoa:shibly
Cách tiếp cận tốt hơn là đầu tiên trên hoặc thường xuyên chuỗi của bạn và sau đó kiểm tra.35 gold badges102 silver badges164 bronze badges
Đã trả lời ngày 23 tháng 11 năm 2017 lúc 10:40
Barmbarm
import re
3844 Huy hiệu bạc11 Huy hiệu đồng
re.search['[a-zA-Z]', string]
Bạn có thể sử dụng biểu thức thông thường như thế này:
re.search['[a-zA-Z]', the_string]
0Đã trả lời ngày 31 tháng 1 năm 2012 lúc 0:50
re.search['[a-zA-Z]', the_string]
1Có vẻ xấu tínhabout half time as compared to iterating isalpha[] even for a relatively small string.
Hence for larger strings and greater counts, re would be significantly more efficient.
11.9K35 Huy hiệu vàng102 Huy hiệu bạc164 Huy hiệu đồngwins here. In every loop it is significantly faster than re.search[] and it doesn't even require any additional imports.
Tôi đã kiểm tra từng phương pháp ở trên để tìm thấy nếu bất kỳ bảng chữ cái nào được chứa trong một chuỗi nhất định và tìm ra thời gian xử lý trung bình trên mỗi chuỗi trên một máy tính tiêu chuẩn.Dec 12, 2019 at 9:06
~ 250 ns choMihir Verma
~ 3 …s cho4 silver badges10 bronze badges
2
~ 6 …s cho
re.search['[a-zA-Z]', the_string]
2~ 850 ns chomatch
Đối diện với bị cáo buộc, nhập RE mất thời gian không đáng kể và tìm kiếm với RE chỉ mất khoảng một nửa so với isalpha [] lặp đi lặp lại ngay cả đối với một chuỗi tương đối nhỏ. Do đó đối với các chuỗi lớn hơn và số lượng lớn hơn, RE sẽ hiệu quả hơn đáng kể.Apr 12, 2018 at 13:18