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…

1 Like

Theo link này


thì muốn escape {} khi format string thì bạn phải double nó lên. Vì thế khi bạn viết {{}} thì sẽ chạy được đúng ý bạn.

2 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?