tôi có mã này trong tập tin C của tôi:Làm cách nào để phân tích cú pháp chuỗi định dạng C bằng Python?
printf("Worker name is %s and id is %d", worker.name, worker.id);
tôi muốn, với Python, để có thể phân tích các chuỗi định dạng và xác định vị trí "%s"
và "%d"
.
Vì vậy, tôi muốn có một hàm:
>>> my_function("Worker name is %s and id is %d")
[Out1]: ((15, "%s"), (28, "%d))
tôi đã cố gắng để đạt được bindings Python này sử dụng libclang, và với pycparser, nhưng tôi không thấy thế nào điều này có thể được thực hiện với những công cụ này.
Tôi cũng đã thử sử dụng regex để giải quyết vấn đề này, nhưng điều này không đơn giản chút nào - hãy suy nghĩ về các trường hợp sử dụng khi printf
có "%%s"
và các nội dung tương tự.
Cả gcc và clang rõ ràng làm điều này như là một phần của quá trình biên dịch - không có ai xuất logic này sang Python không?
Tất cả tôi muốn để làm, chỉ đơn giản là để lo cate "% d" và "% s" bên trong chuỗi - để biết chỉ mục của chúng nếu bạn muốn, và không chuyển đổi nó thành một bản in Python – speller
bạn không thể dễ dàng phân tích nó bằng một regex đơn giản, bạn cần xử lý char bằng char . –
Điều này tất nhiên là có thể, nhưng không đơn giản, tôi thà tránh nó. Thật lạ khi logic này nằm bên trong gcc và clang, không có sẵn trong Python, cũng trong thư viện phân tích cú pháp c – speller