Hãy để tôi mở đầu điều này bằng cách nói rằng tôi không chắc chắn chính xác những gì đang xảy ra với mã của tôi; Tôi khá mới để lập trình.not exactly sure what is happening with my code; I'm fairly new to programming.
Tôi đã làm việc để tạo một dự án cuối cùng cho lớp Python CS của tôi để kiểm tra trang web của giáo viên của tôi hàng ngày và xác định xem anh ấy có thay đổi bất kỳ trang web nào trên trang web của anh ấy kể từ lần cuối cùng chương trình chạy hay không.
Bước tôi đang làm việc ngay bây giờ như sau:
def write_pages_files[]:
'''
Writes the various page files from the website's links
'''
links = get_site_links[]
for page in links:
site_page = requests.get[root_url + page]
soup = BeautifulSoup[site_page.text]
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
out_file.write[str[soup]]
Các liên kết trông giống như thế này:
/site/sitename/class/final-code
Và lỗi tôi nhận được như sau:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
Làm cách nào tôi có thể viết các trang trang web với các loại tên này [/site/sitename/nameofpage.txt]?
Ký tự thoát
Để chèn các ký tự là bất hợp pháp trong một chuỗi, hãy sử dụng một ký tự thoát.
Một nhân vật thoát là một dấu gạch chéo ngược
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']7 theo sau là nhân vật bạn muốn chèn.
Một ví dụ về một ký tự bất hợp pháp là một trích dẫn kép bên trong một chuỗi được bao quanh bởi các trích dẫn kép:
Thí dụ
Bạn sẽ gặp lỗi nếu bạn sử dụng dấu ngoặc kép bên trong một chuỗi được bao quanh bởi các trích dẫn kép:
txt = "Chúng tôi là người được gọi là" người Viking "từ phía bắc."
Hãy tự mình thử »
Để khắc phục sự cố này, hãy sử dụng ký tự thoát
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']8:
Thí dụ
Bạn sẽ gặp lỗi nếu bạn sử dụng dấu ngoặc kép bên trong một chuỗi được bao quanh bởi các trích dẫn kép:
txt = "Chúng tôi là người được gọi là" người Viking "từ phía bắc."
Hãy tự mình thử »
Để khắc phục sự cố này, hãy sử dụng ký tự thoát
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']8:
Mã số | Kết quả | Thử nó |
\ ' | Trích dẫn duy nhất | Thử nó |
\ ' | Trích dẫn duy nhất | Thử nó |
\ ' | Trích dẫn duy nhất | Thử nó |
\ ' | Trích dẫn duy nhất | Thử nó |
\ ' | Trích dẫn duy nhất | Thử nó |
\ ' | Trích dẫn duy nhất | |
Thử nó " | \\ | Thử nó |
\ ' | Trích dẫn duy nhất | Thử nó |
Nếu bạn giống như tôi, bạn sẽ thường xuyên ngồi trước mã của mình và tự hỏi: Làm thế nào để thoát khỏi một nhân vật nhất định?how to escape a given character?
Thử thách: Một số nhân vật có ý nghĩa đặc biệt trong chuỗi Python và biểu thức chính quy. Giả sử bạn muốn tìm kiếm chuỗi >>> import re
>>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +']
['[ { " . * +']
9 nhưng động cơ Regex lấy ba ký tự >>> re.escape['//www.finxter.com/']
'//www\\.finxter\\.com/'
0 làm nhóm phù hợp. Bạn có thể thoát khỏi các biểu tượng và dấu ngoặc đặc biệt bằng cách sử dụng >>> re.escape['//www.finxter.com/']
'//www\\.finxter\\.com/'
1, nhưng điều này là tẻ nhạt và dễ bị lỗi.: Some characters have a special meaning in Python strings and regular expressions. Say you want to to search for string
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']9 but the regex engine takes the three characters
>>> re.escape['//www.finxter.com/'] '//www\\.finxter\\.com/'0 as a matching group. You could manually escape the special symbols and brackets by using
>>> re.escape['//www.finxter.com/'] '//www\\.finxter\\.com/'1, but this is tedious and error-prone.
Câu hỏi: Làm thế nào để thoát khỏi tất cả các biểu tượng Regex đặc biệt tự động?: How to escape all special regex symbols automatically?
Python Regex - Làm thế nào để thoát khỏi các nhân vật đặc biệt?
Nếu bạn cũng có vấn đề này, bạn sẽ gặp may. Bài viết này là hướng dẫn cuối cùng để thoát khỏi các nhân vật đặc biệt trong Python. Chỉ cần nhấp vào chủ đề mà bạn quan tâm và học cách thoát khỏi nhân vật đặc biệt mà bạn hiện đang vật lộn!ultimate guide to escape special characters in Python. Just click on the topic that interests you and learn how to escape the special character you’re currently struggling with!
Nếu bạn là người thiếu kiên nhẫn, bạn cũng gặp may mắn. Chỉ cần cố gắng thêm dấu gạch chéo ngược vào nhân vật đặc biệt của bạn mà bạn muốn trốn thoát:
>>> re.escape['//www.finxter.com/'] '//www\\.finxter\\.com/'2 để thoát khỏi ký tự đặc biệt
>>> re.escape['//www.finxter.com/'] '//www\\.finxter\\.com/'3.
Đây là vài ví dụ:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']
Tuy nhiên, bạn có thể không muốn thoát khỏi tất cả những người đó theo cách thủ công. Đó là lý do tại sao phương pháp Re.escape tồn tại!
- Phương pháp Python Re.escape
- Python regex thoát khỏi các ký tự
- Python Regex Escape Parentheses []
- Python Regex Escape Chân vuông []
- Python Regex Escape Curly Brace [giá đỡ]
- Python Regex Escape Slash [Backslash và Slash về phía trước]
- Python regex Escap String Trích dẫn đơn lẻ
- Python regex Escape Chuỗi trích dẫn đôi
- Python Regex Escape Dot [thời kỳ]
- Python Regex Escape Plus
- Python Regex Escape Asterisk
- Python regex thoát khỏi dấu câu hỏi
- Python Regex Escape Undercore
- Python Regex Escap
- Python Regex Escape Dollar
- Python Regex thoát ra lớn hơn và nhỏ hơn
- Python regex thoát hiểm
- Python regex thoát khỏi dòng mới
- Python regex thoát hiểm xấu
- Đi đâu từ đây
Phương pháp Python Re.escape
Python regex thoát khỏi các ký tự
Python Regex Escape Parentheses []:
>>> re.escape['//www.finxter.com/'] '//www\\.finxter\\.com/'4
Python Regex Escape Chân vuông []: escapes all special regex meta characters in the given
>>> re.escape['//www.finxter.com/'] '//www\\.finxter\\.com/'6.
Python Regex Escape Curly Brace [giá đỡ]: you can escape all special symbols in one go:
>>> re.escape['//www.finxter.com/'] '//www\\.finxter\\.com/'
Python Regex Escape Slash [Backslash và Slash về phía trước]
Python regex Escap String Trích dẫn đơn lẻ
Python regex Escape Chuỗi trích dẫn đôi Python Regex Superpower – The Ultimate Guide
Python Regex Escape Dot [thời kỳ] Check out my new book The Smartest Way to Learn Regular Expressions in Python with the innovative 3-step approach for active learning: [1] study a book chapter, [2] solve a code puzzle, and [3] watch an educational chapter video.
Python regex thoát khỏi các ký tự
Python Regex Escape Parentheses []
Sau đây, tôi chỉ ra cách thoát khỏi tất cả các ký tự đặc biệt có thể cho chuỗi Python và biểu thức chính quy:
Python Regex Escape Parentheses []
Làm thế nào để thoát khỏi dấu ngoặc đơn
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']3 và
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']4 trong các biểu thức thông thường của Python?
Điểm dừng có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: chúng mở và đóng các nhóm phù hợp.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của dấu ngoặc đơn bằng cách sử dụng tiền tố dấu gạch chéo ngược:
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']5 và
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']6. Bằng cách này, bạn có thể khớp các ký tự dấu ngoặc đơn trong một chuỗi đã cho. Đây là một ví dụ:
>>> import re >>> re.findall[r'\[.*\]', 'Python is [really] great'] ['[really]']
Kết quả cho thấy một chuỗi chứa các ký tự đặc biệt của người Viking
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']7 và
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']8.
Python Regex Escape Chân vuông []
Làm thế nào để thoát khỏi các dấu ngoặc vuông
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']9 và
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']0 trong các biểu thức thông thường của Python?
Khung vuông có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: chúng mở và gần các bộ ký tự.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của dấu ngoặc bằng cách sử dụng tiền tố ngược:
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']1 và
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']2. Bằng cách này, bạn có thể khớp các ký tự dấu ngoặc trong một chuỗi đã cho. Đây là một ví dụ:
>>> import re >>> re.findall[r'\[.*\]', 'Is Python [really] easy?'] ['[really]']
Kết quả cho thấy một chuỗi chứa các ký tự đặc biệt của người Viking
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']3 và
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']4.
Python Regex Escape Curly Brace [giá đỡ]
Làm thế nào để thoát khỏi niềng răng xoăn ____65 và
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']6 trong các biểu thức thông thường của Python?
Các niềng răng xoăn don don có bất kỳ ý nghĩa đặc biệt nào trong chuỗi Python hoặc biểu thức thông thường. Do đó, bạn không cần phải thoát khỏi chúng với một nhân vật ngược dòng hàng đầu
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']7. Tuy nhiên, bạn có thể làm như vậy nếu bạn muốn như bạn thấy trong ví dụ sau:
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']
Tất cả ba trường hợp đều phù hợp với cùng một chuỗi được đặt trong niềng răng xoăn, mặc dù chúng tôi đã không thoát khỏi chúng và không sử dụng chuỗi thô
>>> import re >>> re.findall[r'\{.*\}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall[r'{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }'] >>> re.findall['{.*}', 'if [2==2] { y = 3; }'] ['{ y = 3; }']8 trong ví dụ thứ ba.
Python Regex Escape Slash [Backslash và Slash về phía trước]
Làm thế nào để thoát khỏi các ký tự chém của Backslash
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']7 và slash về phía trước ____ 70, trong các biểu thức chính quy của Python?
Backslash có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: nó thoát khỏi các ký tự đặc biệt và do đó, loại bỏ ý nghĩa đặc biệt. [Cách meta.]
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']
Bạn có thể thấy rằng các trận đấu kết quả đã thoát khỏi sự chéo ngược. Điều này là do ký tự dấu gạch chéo ngược có ý nghĩa đặc biệt trong các chuỗi bình thường. Do đó, thông dịch viên Python tự động thoát khỏi nó khi in nó trên vỏ. Lưu ý rằng bạn đã không cần phải thoát khỏi các ký tự dấu gạch chéo ngược khi viết chuỗi RAW
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']1 vì chuỗi RAW đã xóa tất cả các ý nghĩa đặc biệt khỏi các ký tự bị dấu vết. Nhưng nếu bạn không muốn sử dụng một chuỗi thô nhưng một chuỗi bình thường, bạn cần phải tự mình thoát khỏi ký tự dấu gạch chéo ngược:
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']
Trái ngược với dấu vết chéo ngược, người đi đường phía trước không cần phải thoát ra. Tại sao? Bởi vì nó không có ý nghĩa đặc biệt trong chuỗi Python và biểu thức thông thường. Bạn có thể thấy điều này trong ví dụ sau:
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']
Kết quả cho thấy ngay cả trong một chuỗi không phải raw, bạn có thể sử dụng độ trượt phía trước mà không cần ký tự thoát dẫn đầu.
Python regex Escap String Trích dẫn đơn lẻ
Làm thế nào để thoát khỏi các trích dẫn duy nhất
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']2 trong các biểu thức chính quy của Python?
Trích dẫn đơn có ý nghĩa đặc biệt trong các biểu thức thông thường Python: chúng mở và đóng chuỗi.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của các trích dẫn đơn bằng cách sử dụng tiền tố dấu gạch chéo ngược:
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']3. Bằng cách này, bạn có thể khớp các ký tự trích dẫn chuỗi trong một chuỗi đã cho. Đây là một ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
0Kết quả cho thấy một chuỗi chứa các ký tự trích dẫn đơn đặc biệt của người Viking. Kết quả cũng cho thấy một giải pháp thay thế loại bỏ ý nghĩa đặc biệt của các trích dẫn đơn: Đưa chúng trong các trích dẫn kép:
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']4.
Python regex Escape Chuỗi trích dẫn đôi
Làm thế nào để thoát khỏi các trích dẫn kép
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']5 trong các biểu thức chính quy của Python?
Double Trích dẫn có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: chúng mở và đóng chuỗi.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của các trích dẫn đơn bằng cách sử dụng tiền tố dấu gạch chéo ngược:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']8. Bằng cách này, bạn có thể khớp các ký tự trích dẫn chuỗi trong một chuỗi đã cho. Đây là một ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
1Kết quả cho thấy một chuỗi chứa các ký tự trích dẫn đơn đặc biệt của người Viking. Kết quả cũng cho thấy một giải pháp thay thế loại bỏ ý nghĩa đặc biệt của các trích dẫn đơn: Đưa chúng trong các trích dẫn kép:
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']7.
Python Regex Escape Dot [thời kỳ]
Làm thế nào để thoát khỏi ký tự meta regex dot [hoặc giai đoạn]
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']8 trong các biểu thức chính quy của Python?
Nhân vật DOT có một ý nghĩa đặc biệt trong các biểu thức chính quy Python: nó phù hợp với một ký tự tùy ý [ngoại trừ dòng mới].
Bạn có thể thoát khỏi ý nghĩa đặc biệt của ký tự DOT bằng cách sử dụng tiền tố dấu gạch chéo ngược:
>>> import re >>> re.findall[r'\\...', r'C:\home\usr\dir\hello\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']9. Bằng cách này, bạn có thể khớp với ký tự dấu chấm trong một chuỗi đã cho. Đây là một ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
2Kết quả cho thấy bốn chuỗi có chứa các ký tự đặc biệt trên mạng
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']0.
Python Regex Escape Plus
Làm thế nào để thoát khỏi biểu tượng cộng
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']1 trong các biểu thức chính quy của Python?
Biểu tượng cộng có một ý nghĩa đặc biệt trong các biểu thức thông thường của Python: nó là bộ định lượng một hoặc nhiều hơn của Regex trước đó.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của biểu tượng Regex Plus bằng cách sử dụng tiền tố ngược:
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']2. Bằng cách này, bạn có thể khớp các ký tự biểu tượng cộng trong một chuỗi đã cho. Đây là một ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
3Kết quả cho thấy cả hai cách sử dụng: biểu tượng cộng có và không có nhân vật thoát dẫn đầu. Nếu nó được thoát
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']2, nó phù hợp với ký tự cộng với. Nếu nó không thoát ra
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']1, nó định lượng mẫu regex ngay trước mặt nó [trong trường hợp của chúng tôi là biểu tượng cộng].
Python Regex Escape Asterisk
Làm thế nào để thoát khỏi biểu tượng dấu hoa thị
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']5 trong các biểu thức chính quy của Python?
Biểu tượng dấu hoa thị có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: nó là bộ định lượng không hoặc không có nhiều của Regex trước đó.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của biểu tượng Asterisk Regex bằng cách sử dụng tiền tố ngược:
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']6. Bằng cách này, bạn có thể khớp các ký tự biểu tượng dấu hoa thị trong một chuỗi đã cho. Đây là một ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
4Kết quả cho thấy cả hai cách sử dụng: biểu tượng dấu hoa thị có và không có nhân vật thoát dẫn đầu. Nếu nó được thoát
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']6, nó phù hợp với ký tự dấu hoa thị thô. Nếu nó không thoát ra
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']5, nó định lượng mẫu regex ngay trước mặt nó [trong trường hợp của chúng tôi, biểu tượng dấu hoa thị].
Python regex thoát khỏi dấu câu hỏi
Làm thế nào để thoát khỏi biểu tượng dấu hỏi
>>> re.findall[r'\\...', 'C:\\home\\usr\\dir\\hello\\world'] ['\\hom', '\\usr', '\\dir', '\\hel', '\\wor']9 trong các biểu thức thông thường của Python?
Biểu tượng đánh dấu câu hỏi có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: nó là bộ định lượng không hoặc một của Regex trước đó.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của biểu tượng dấu câu hỏi bằng cách sử dụng tiền tố dấu gạch chéo ngược:
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']0. Bằng cách này, bạn có thể khớp các ký tự biểu tượng dấu câu hỏi trong một chuỗi đã cho. Đây là một ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
5Kết quả cho thấy biểu tượng dấu câu hỏi được khớp trong chuỗi đã cho.
Python Regex Escape Undercore
Làm thế nào để thoát khỏi nhân vật dấu gạch dưới
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']1 trong các biểu thức thông thường của Python?
Undercore không có ý nghĩa đặc biệt trong các biểu thức thông thường Python hoặc chuỗi Python.
Do đó, bạn không cần phải thoát khỏi nhân vật dấu gạch dưới, chỉ cần sử dụng nó trong biểu thức thông thường của bạn.
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
6Tuy nhiên, nó cũng không gây hại gì khi thoát khỏi nó:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
7Trong cả hai trường hợp, Python tìm thấy các ký tự dấu gạch dưới trong chuỗi và khớp với chúng trong kết quả.
Python Regex Escap
Làm thế nào để thoát khỏi ký hiệu ống
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']2 [đường thẳng đứng] trong các biểu thức chính quy của Python?
Biểu tượng đường ống có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: Regex hoặc toán tử.
Bạn có thể thoát khỏi ý nghĩa đặc biệt của ký hiệu đường ống bằng cách sử dụng tiền tố ngược:
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']3. Bằng cách này, bạn có thể khớp các ký tự dấu ngoặc đơn trong một chuỗi đã cho. Đây là một ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
8Bằng cách thoát khỏi ký hiệu đường ống, bạn thoát khỏi ý nghĩa đặc biệt. Kết quả chỉ là biểu tượng đường ống phù hợp với nhân vật tùy ý dẫn đầu và theo dõi.
Nếu bạn không thoát khỏi ký hiệu đường ống, kết quả sẽ khá khác biệt:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
9Trong trường hợp này, Regex
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']4 phù hợp với một nhân vật tùy tiện hoặc một nhân vật tùy ý, đó là vô nghĩa!
Python Regex Escape Dollar
Làm thế nào để thoát khỏi biểu tượng đô la
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']5 trong các biểu thức thông thường của Python?
Biểu tượng đồng đô la có một ý nghĩa đặc biệt trong các biểu thức thông thường Python: Nó khớp với cuối chuỗi.
Bạn có thể thoát khỏi ý nghĩa đặc biệt bằng cách sử dụng tiền tố dấu gạch chéo ngược:
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']6. Bằng cách này, bạn có thể khớp với biểu tượng đô la trong một chuỗi nhất định. Đây là một ví dụ:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']0
Lưu ý rằng regex
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']7 phù hợp với một số chữ số số tùy ý từ 0 đến 9.
Python Regex thoát ra lớn hơn và nhỏ hơn
Làm thế nào để thoát khỏi các biểu tượng lớn hơn
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']8 và nhỏ hơn
>>> import re >>> re.findall['/...', '/home/usr/dir/hello/world'] ['/hom', '/usr', '/dir', '/hel', '/wor']9 trong các biểu thức thông thường của Python?
Lớn hơn và nhỏ hơn các biểu tượng don lồng có một ý nghĩa đặc biệt trong các biểu thức thông thường của Python. Do đó, bạn không cần phải thoát khỏi chúng.
Đây là một ví dụ:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']1
Kết quả cho thấy một chuỗi mà ngay cả khi không thoát khỏi các ký hiệu thẻ HTML, regex khớp với toàn bộ chuỗi.
Python regex thoát hiểm
Làm thế nào để thoát khỏi dấu gạch nối trong các biểu thức thông thường của Python?
Bên ngoài một bộ nhân vật, dấu gạch nối không có ý nghĩa đặc biệt và bạn không cần phải thoát khỏi nó. Đây là một ví dụ: a character set, the hyphen doesn’t have a special meaning and you don’t need to escape it. Here’s an example:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']2
Ký tự dấu gạch nối không được phân loại trong regex phù hợp với dấu gạch nối trong chuỗi.
Tuy nhiên, bên trong một bộ ký tự, dấu gạch nối là biểu tượng phạm vi [ví dụ:
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
01] để bạn cần thoát khỏi nó nếu bạn muốn loại bỏ ý nghĩa đặc biệt của nó và khớp với biểu tượng dấu gạch nối. Đây là một ví dụ:inside a character set, the hyphen stands for the range symbol [e.g. with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
01] so you need to escape it if you want to get rid of its special meaning and match the hyphen symbol itself. Here’s an example:>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']3
Lưu ý rằng, trong trường hợp này, nếu bạn không thoát khỏi dấu gạch nối trong bộ ký tự, bạn sẽ nhận được kết quả tương tự:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']4
Lý do là dấu gạch nối xuất hiện ở cuối bộ ký tự nơi nó chỉ có thể có một ý nghĩa: chính biểu tượng dấu gạch nối. Tuy nhiên, trong tất cả các trường hợp khác, dấu gạch nối sẽ được cho là có nghĩa là ký tự phạm vi sẽ dẫn đến hành vi kỳ lạ. Do đó, một thực tế tốt là để thoát khỏi dấu gạch nối trong lớp ký tự cho mỗi mặc định.
Python regex thoát khỏi dòng mới
Trong một bài viết gần đây của StackoverFlow, tôi đã đọc câu hỏi sau:
Tôi có một chút bối rối về chuỗi Raw Python. Tôi biết rằng nếu chúng ta sử dụng chuỗi RAW, thì nó sẽ coi
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
02 như một dấu gạch chéo ngược bình thường [ví dụ with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
03 sẽ là with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
02 và with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
05]. Tuy nhiên, tôi đã tự hỏi nếu tôi muốn khớp một ký tự dòng mới trong chuỗi RAW. Tôi đã thử with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
03, nhưng nó không hoạt động. Có ai có một số ý tưởng tốt về điều này?Người lập trình viên đặt câu hỏi đã hiểu rằng trình thông dịch Python không cho rằng hai ký tự
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']7 và
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
08 có bất kỳ ý nghĩa đặc biệt nào trong các chuỗi thô [trái ngược với các chuỗi bình thường].Tuy nhiên, hai biểu tượng đó có ý nghĩa đặc biệt cho động cơ Regex! Vì vậy, nếu bạn sử dụng chúng như một mẫu biểu thức thông thường, chúng thực sự sẽ khớp với ký tự dòng mới:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']5
Do đó, bạn không cần phải thoát khỏi ký tự mới một lần nữa để khớp nó trong một chuỗi nhất định.
Python regex thoát hiểm xấu
Có một số lỗi phổ biến liên quan đến việc thoát trong các biểu thức thông thường của Python.
Nếu bạn cố gắng thoát khỏi một nhân vật bình thường không có ý nghĩa đặc biệt, Python sẽ ném một lỗi thoát hiểm xấu của người Hồi giáo:
>>> import re >>> re.findall['\[ \{ \" \. \* \+', r'[ { " . * +'] ['[ { " . * +']6
Như thông báo lỗi cho thấy, ở đó, không có trình tự thoát
with open[page + ".txt", mode='wt', encoding='utf-8'] as out_file:
FileNotFoundError: [Errno 2] No such file or directory: '/site/sitename/class.txt'
09 để bạn cần loại bỏ nó để tránh lỗi.Đi đâu từ đây
Wow, bạn đã đọc về rất nhiều chuỗi nhân vật đã trốn thoát hoặc bạn đã thực hiện rất nhiều việc cuộn để đạt được điểm này.
Trong cả hai trường hợp, bạn có một lợi thế lớn so với các lập trình viên khác: bạn là một chàng trai hoặc gal dai dẳng!
Bạn có muốn tăng lợi thế của bạn so với các đồng nghiệp của bạn? Sau đó tham gia Học viện Email Python của tôi! Tôi sẽ dạy cho bạn sự trong và ngoài của Python Coding, tất cả đều miễn phí!
Tham gia Finxter Email Academy, trở thành một lập trình viên tốt hơn và tải xuống các tấm cheat Python miễn phí của bạn!
Trong khi làm việc như một nhà nghiên cứu trong các hệ thống phân tán, Tiến sĩ Christian Mayer đã tìm thấy tình yêu của mình đối với việc dạy các sinh viên khoa học máy tính.
Để giúp học sinh đạt được thành công cao hơn của Python, ông đã thành lập trang web giáo dục chương trình Finxter.com. Ông là tác giả của cuốn sách lập trình phổ biến Python Oneer [Nostarch 2020], đồng tác giả của loạt sách Break Break Python, những cuốn sách tự xuất bản, người đam mê khoa học máy tính, freelancer và chủ sở hữu của một trong 10 blog Python lớn nhất trên toàn thế giới.
Niềm đam mê của ông là viết, đọc và mã hóa. Nhưng niềm đam mê lớn nhất của anh là phục vụ các lập trình viên đầy tham vọng thông qua Finxter và giúp họ tăng cường các kỹ năng của họ. Bạn có thể tham gia học viện email miễn phí của anh ấy ở đây.