Regular Expression
Mình đang vướng mắc một ví dụ nhỏ như sau:
Đề bài là cho một chuỗi các từ và một số nguyên, trả về danh sách các từ có số chữ cái lớn hơn hoặc bằng số nguyên đó.
Example:
>>> find_words(4, "dog, cat, baby, balloon, me")
['baby', 'balloon']
Và đây là cái hàm:
import re
def find_words(count, string):
return re.findall(r"w{{},}".format(count), string)
Khi chạy thì bị lỗi “Single ‘}’ encountered in format string”. Sửa code thành r"w{{{},}}".
thì ok.
Mình không hiểu là tại sao phải cần đến ba cặp dấu ngoặc nhọn mà không phải là hai, vì:
w{count,}
sẽ tìm những từ có từ count chữ số trở lên, và bởi vì không thể truyền count trực tiếp nên chỉ cần một cái {} vào chữ count thôi chứ? Mời các cao thủ Python vào thông não…
Theo link này
stackoverflow.com
How can I print literal curly-brace characters in python string and also use .format on it?
thì muốn escape
{
và}
khi format string thì bạn phải double nó lên. Vì thế khi bạn viết{{
và}}
thì sẽ chạy được đúng ý bạn.