30/09/2018, 19:34

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…

htl@PyMI.vn viết 21:39 ngày 30/09/2018

Theo link này

stackoverflow.com
Schitti

How can I print literal curly-brace characters in python string and also use .format on it?

python, string, format, string-formatting
asked by Schitti on 12:04AM - 29 Mar 11

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.

Bài liên quan
0