Tôi đang gặp khó khăn khi tìm regex để bắt đầu và kết thúc tệp trong python. Tôi sẽ làm điều này như thế nào?Bắt đầu và kết thúc tệp trong python với regex
Trả lời
Có thể bạn nên đặt câu hỏi của mình rõ ràng hơn, giống như những gì bạn đang cố gắng làm. Điều đó nói rằng, bạn có thể slurp các tập tin vào một chuỗi toàn bộ, và phù hợp với mô hình của bạn bằng cách sử dụng lại.
import re
data=open("file").read()
pat=re.compile("^.*pattern.*$",re.M|re.DOTALL)
print pat.findall(data)
Có những cách tốt hơn để làm những gì bạn muốn, bất kể nó là gì, mà không cần phải làm lại.
Bởi vì. * Là tham lam, sẽ chỉ tìm thấy một ví dụ về 'mẫu' trong một tệp. Vì bạn đã chỉ định cờ re.M, $ phù hợp ngay trước mỗi dòng mới trong tệp, vì vậy với tham lam. * Và re.DOTALL, dấu đầu tiên. * Sẽ khớp với mọi thứ trước 'mẫu' cuối cùng trong tệp và thứ hai sẽ phù hợp với mọi thứ sau 'mẫu' cuối cùng. –
bất cứ điều gì. đây không phải là một giải pháp đầy đủ, vì chúng tôi không chắc chắn những gì OP thực sự muốn làm. Điều tốt nhất tôi có thể làm là nói với anh ta rằng anh ta có thể đọc toàn bộ tập tin dưới dạng chuỗi và thực hiện regex trên nó giống như các chuỗi bình thường. – ghostdog74
regex $
là NOT bạn của bạn; xem this SO answer
Đọc toàn bộ tệp thành chuỗi, sau đó \ A chỉ khớp với đầu chuỗi và \ Z chỉ khớp với phần cuối của chuỗi. Với re.MULTILINE, '^' khớp với phần đầu của chuỗi và ngay sau dòng mới và '$' khớp với phần cuối của chuỗi và ngay trước dòng mới. Xem tài liệu Python cho re syntax.
import re
data = '''sentence one.
sentence two.
a bad sentence
sentence three.
sentence four.'''
# find lines ending in a period
print re.findall(r'^.*\.$',data,re.MULTILINE)
# match if the first line ends in a period
print re.findall(r'\A^.*\.$',data,re.MULTILINE)
# match if the last line ends in a period.
print re.findall(r'^.*\.$\Z',data,re.MULTILINE)
Output:
['sentence one.', 'sentence two.', 'sentence three.', 'sentence four.']
['sentence one.']
['sentence four.']
- 1. Kết hợp Regex bắt đầu và kết thúc chuỗi
- 2. Làm cách nào để tôi có thể bắt đầu và kết thúc trong regex của Python?
- 3. UITableView bắt đầu/kết thúc cập nhật
- 4. Không gian thư viện lúc bắt đầu và kết thúc
- 5. giải nén chuỗi bắt đầu với và kết thúc với một cái gì đó trong C#
- 6. Kiểm tra xem một chuỗi bắt đầu và kết thúc với các nhân vật số sử dụng regex
- 7. Vẽ hình elip với góc bắt đầu và kết thúc trong Mục tiêu-C
- 8. Bắt đầu. . . kết thúc trong khi biểu thị một 'khối'?
- 9. tìm kiếm với grep cho những từ bắt đầu và kết thúc với
- 10. Với dấu thời gian Unix, cách bắt đầu và kết thúc ngày hôm đó?
- 11. nhận ngày bắt đầu và ngày kết thúc tuần từ số tuần và năm trong android
- 12. Nhận ngày bắt đầu và kết thúc trong tuần? Trong máy chủ Sql?
- 13. Làm cách nào để viết regex cho các kết quả khớp chuỗi bắt đầu bằng @ hoặc kết thúc bằng?
- 14. Cách bắt đầu hoạt động trên hoạt ảnh kết thúc
- 15. Tự động tìm bắt đầu và kết thúc tuần làm việc trong Bảng tính Google
- 16. Quá trình không đồng bộ bắt đầu và đợi cho đến khi kết thúc
- 17. Làm thế nào để chạy truy vấn Oracle với bắt đầu/kết thúc trong SQL * Plus?
- 18. Cách nhận thời gian bắt đầu và kết thúc trong một ngày
- 19. Tìm bắt đầu và kết thúc chỉ số của sublist trong danh sách
- 20. Thời gian bắt đầu và thời gian kết thúc trong JMeter Scheduler
- 21. Làm cách nào để bắt đầu và kết thúc trong ngày bằng Javascript?
- 22. Hủy bỏ dấu ngoặc kép từ khi bắt đầu và kết thúc của chuỗi trong PHP
- 23. Java Regex để loại bỏ bắt đầu/kết thúc dấu nháy đơn nhưng để lại bên trong dấu ngoặc kép
- 24. Tìm những khoảng trống trong thời gian không nằm trong hồ sơ với ngày bắt đầu và ngày kết thúc
- 25. Python: regex để bắt dữ liệu
- 26. Bắt đầu với phân tích tệp kết xuất
- 27. Bắt đầu bit và bắt đầu Byte
- 28. Tính ngày bắt đầu và ngày kết thúc của tuần trước
- 29. Chỉ định tùy tiện bắt đầu và kết thúc thời gian cho công việc định kỳ
- 30. Bắt đầu với Twitter \ OAuth2 \ Python
Regular expressions được áp dụng cho các chuỗi, không phải tập tin. – MattH