Làm cách nào để tìm kiếm tệp văn bản cho cụm từ khóa hoặc từ khóa và sau đó in dòng mà cụm từ khóa hoặc từ khóa nằm trong?Tìm kiếm tệp văn bản và in các dòng liên quan bằng Python?
Trả lời
searchfile = open("file.txt", "r")
for line in searchfile:
if "searchphrase" in line: print line
searchfile.close()
Để in ra nhiều dòng (một cách đơn giản)
f = open("file.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
Dấu phẩy trong print l,
ngăn chặn thêm dấu cách xuất hiện trong đầu ra; báo cáo in dấu vết phân tách các kết quả từ các dòng khác nhau.
Hoặc tốt hơn (ăn cắp trở lại từ Mark Ransom):
with open("file.txt", "r") as f:
searchlines = f.readlines()
for i, line in enumerate(searchlines):
if "searchphrase" in line:
for l in searchlines[i:i+3]: print l,
print
with open('file.txt', 'r') as searchfile:
for line in searchfile:
if 'searchphrase' in line:
print line
Với lời xin lỗi đến senderle người tôi ngang nhiên sao chép.
+1. Tôi đã bực mình - nhưng sau đó tôi đã dành một chút thời gian để hiểu câu nói đó. Điều đó thật tuyệt! – senderle
@senderle, cảm ơn vì điều đó. Tôi chỉ xem xét việc chỉnh sửa câu trả lời của bạn, nhưng tôi nghĩ điều đó thậm chí còn khó chịu hơn - và câu lệnh 'with' là một bổ sung gần đây cho Python, làm cho câu trả lời của bạn phù hợp nhất với một số người. Bạn đã +1 của tôi từ lâu rồi! –
có, gần đây và với tôi, khó hiểu, bổ sung, cho đến bây giờ; Tôi phải thừa nhận rằng tôi đã đấu tranh để lúng túng tuyên bố với một vài tuần trước và đã đi lên trống - nhưng ví dụ đơn giản này giải thích nó hoàn hảo. – senderle
Lưu ý tiềm năng cho chỉ mục ngoài phạm vi có "i + 3". Bạn có thể làm điều gì đó như:
with open("file.txt", "r") as f:
searchlines = f.readlines()
j=len(searchlines)-1
for i, line in enumerate(searchlines):
if "searchphrase" in line:
k=min(i+3,j)
for l in searchlines[i:k]: print l,
print
Chỉnh sửa: có thể không cần thiết. Tôi vừa thử nghiệm một số ví dụ. x [y] sẽ đưa ra lỗi nếu y nằm ngoài phạm vi, nhưng x [y: z] dường như không đưa ra lỗi cho các giá trị phạm vi của y và z.
Cắt lát không tạo ra lỗi phạm vi. Khi bạn lấy một lát, bạn nói "cung cấp cho tôi một danh sách các mục trong phạm vi này". Nếu không có mục nào trong phạm vi nhất định, thì danh sách trống sẽ phân phối những gì được yêu cầu. Mặt khác, lập chỉ mục cho biết "cung cấp cho tôi mục chính xác tại chỉ mục' i'. " Nếu không có mục nào tại 'i', sau đó trả về một cái gì đó - thậm chí là' None' - sẽ là một lời nói dối, vì vậy tốt hơn là nên đưa ra một ngoại lệ. – senderle
- 1. Tìm Siêu liên kết trong Văn bản bằng Python (liên quan đến twitter)
- 2. Tìm và thay thế nhiều dòng trong tệp xml/văn bản bằng cách sử dụng python
- 3. tìm kiếm văn bản boolean trong python
- 4. Tìm kiếm MySQL và tìm kiếm toàn văn bản
- 5. Postgres tìm kiếm toàn văn trên nhiều bảng liên quan
- 6. MongoDB Tìm kiếm văn bản VÀ nhiều từ tìm kiếm
- 7. Tìm và thay thế văn bản trong tệp .docx - Python
- 8. Tệp văn bản tìm kiếm C#, trả lại tất cả các dòng có chứa một từ
- 9. Sử dụng IN hoặc tìm kiếm văn bản
- 10. Tìm kiếm tệp Python cơ bản và I/O
- 11. tìm kiếm tập tin văn bản bằng cách sử dụng C# và hiển thị số dòng và dòng hoàn chỉnh chứa từ khóa tìm kiếm
- 12. Tìm kiếm bản sao trong tệp văn bản cục bộ
- 13. XCode - văn bản tìm kiếm trong tất cả các tệp
- 14. Tìm dòng cuối cùng trong một tệp văn bản
- 15. python - Đọc tệp từ và tới các dòng văn bản cụ thể
- 16. Django - lĩnh vực liên quan Tìm kiếm
- 17. SQLAlchemy với PostgresSQL và Tìm kiếm Toàn văn Tìm kiếm
- 18. Làm cách nào để in dòng khớp với văn bản của tôi bằng tìm trong linux?
- 19. Cách sao chép văn bản từ chế độ dòng lệnh trong Vim khi tìm kiếm
- 20. Công cụ tìm kiếm văn bản tệp đơn giản?
- 21. Nối văn bản vào tệp bằng Python
- 22. Xóa Dòng Tệp Văn bản Hàng đầu bằng PowerShell
- 23. Thao tác bằng Python và văn bản
- 24. Đọc hai dòng văn bản theo dòng đồng thời -python
- 25. Tìm kiếm tệp văn bản và kết quả hiển thị trong JPanel
- 26. Đếm các dòng, từ và ký tự trong một tệp văn bản bằng cách sử dụng Python
- 27. Sao chép từ một tệp văn bản này sang một tệp văn bản khác bằng cách sử dụng Python
- 28. Tìm tất cả các tệp khớp với 'tên' trên hệ thống Linux và tìm kiếm chúng với 'văn bản'
- 29. Tìm kiếm và nhận một dòng trong Python
- 30. Thuật toán nhanh để tìm kiếm mẫu trong tệp văn bản
đóng tệp sau khi xử lý. – Rozuur
Làm cách nào để in dòng đó và ba dòng khác bên dưới? –
@Rozuur: đủ công bằng. đã chỉnh sửa. – senderle