Đây có vẻ như là một câu hỏi thẳng thắn nhưng tôi dường như không thể xác định được vấn đề của mình. Tôi đang cố gắng xóa tất cả các dòng trong một tệp bắt đầu bằng Octothorpe (#) ngoại trừ dòng đầu tiên. Đây là vòng lặp tôi đang làm việc với: for i, line in enumerate(input_file):
if i > 1:
if not line.startswith('#'):
output.write(line)
Mã trên dường như không hoạt động. Có ai biết vấn đề của tôi là gì không? Cảm ơn!
Hỏi ngày 8 tháng 8 năm 2011 lúc 17:07Aug 8, 2011 at 17:07 6 Bạn không viết ra dòng đầu tiên: for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
Hãy nhớ rằng for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
1 (giống như hầu hết mọi thứ) bắt đầu ở mức 0.Chính xác hơn một chút (và không lặp lại dòng đầu ra): for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
Đã trả lời ngày 8 tháng 8 năm 2011 lúc 17:09Aug 8, 2011 at 17:09
Ned Batchelderned BatchelderNed Batchelder 353K71 Huy hiệu vàng553 Huy hiệu bạc650 Huy hiệu Đồng71 gold badges553 silver badges650 bronze badges 1 Tôi sẽ không bận tâm với việc liệt kê ở đây. Bạn chỉ cần nó quyết định dòng nào là dòng đầu tiên và cái nào không. Điều này sẽ đủ dễ dàng để xử lý bằng cách viết dòng đầu tiên ra và sau đó sử dụng một vòng lặp để viết các dòng bổ sung không bắt đầu bằng '#'. def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
Cảm ơn TwoPoint718 vì đã chỉ ra lợi thế của việc sử dụng Lstrip. Đã trả lời ngày 8 tháng 8 năm 2011 lúc 17:29Aug 8, 2011 at 17:29
DunesdunesDunes Phim huy hiệu vàng 35,9k77 gold
badges78 silver badges93 bronze badges Có thể bạn muốn bỏ qua các dòng từ đầu ra trong đó ký tự không phải là màu đầu tiên là Octothorpe: for i, line in enumerate(input_file):
if i == 0 or not line.lstrip().startswith('#'):
output.write(line)
(Lưu ý cuộc gọi đến for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
2) Đã trả lời ngày 8 tháng 8 năm 2011 lúc 17:17Aug 8, 2011 at 17:17 ChrischrisChris 2.86026 Huy hiệu bạc42 Huy hiệu đồng26 silver badges42 bronze badges 3 Bài viết này cho bạn biết cách xóa các dòng cụ thể khỏi một tệp trong Python. Ví dụ: bạn muốn xóa các dòng #5 và #12. Sau khi đọc bài viết này, bạn sẽ học:: - Cách xóa các dòng cụ thể khỏi tệp theo số dòng
- Cách xóa các dòng khớp hoặc chứa văn bản/chuỗi đã cho
- Cách xóa dòng đầu tiên và cuối cùng khỏi tệp văn bản.
Xóa các dòng khỏi một tệp theo số dòngVui lòng làm theo các bước dưới đây để xóa các dòng cụ thể khỏi tệp văn bản theo số dòng: - - Mở tệp ở chế độ đọc
- Đọc một tập tin. Đọc tất cả nội dung từ một tệp vào danh sách bằng phương thức
for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
3. Ở đây mỗi phần tử của danh sách là một dòng từ tệp
- Đóng một tập tin
- Một lần nữa, mở cùng một tệp trong chế độ ghi.
- Lặp lại tất cả các dòng từ một danh sách sử dụng hàm for loop và liệt kê (). Hàm
for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
4 thêm một bộ đếm vào một điều có thể (chẳng hạn như danh sách, chuỗi) và trả về nó trong việc liệt kê đối tượng. Chúng tôi đã sử dụng đối tượng liệt kê với một vòng lặp để truy cập số dòng - Sử dụng điều kiện IF trong mỗi lần lặp của một vòng để kiểm tra số dòng. Nếu nó khớp với số dòng để xóa, thì don don viết dòng đó vào tệp.
- Đóng một tập tin
Example:: Một lần nữa, mở cùng một tệp trong chế độ ghi.how to delete lines from a text file by line
number in Python. See the attached file used in the example and an image to show the file’s content for reference. Lặp lại tất cả các dòng từ một danh sách sử dụng hàm for loop và liệt kê (). Hàm for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
4 thêm một bộ đếm vào một điều có thể (chẳng hạn như danh sách, chuỗi) và trả về nó trong việc liệt kê đối tượng. Chúng tôi đã sử dụng đối tượng liệt kê với một vòng lặp để truy cập số dòngSử dụng điều kiện IF trong mỗi lần lặp của một vòng để kiểm tra số dòng. Nếu nó khớp với số dòng để xóa, thì don don viết dòng đó vào tệp.deleting lines 5 and 8. # list to store file lines
lines = []
# read file
with open(r"E:\demos\files\sample.txt", 'r') as fp:
# read an store all lines into list
lines = fp.readlines()
# Write file
with open(r"E:\demos\files\sample.txt", 'w') as fp:
# iterate each line
for number, line in enumerate(lines):
# delete line 5 and 8. or pass any Nth line you want to remove
# note list index starts from 0
if number not in [4, 7]:
fp.write(line)
Mã sau đây hiển thị & nbsp; cách xóa các dòng khỏi tệp văn bản theo số dòng & nbsp; trong python. Xem tệp đính kèm được sử dụng trong ví dụ và hình ảnh để hiển thị nội dung tệp để tham khảo. First line
Second line
Third line
Fourth line
Sixth line
Seventh line Note:: Tệp văn bản Trong ví dụ này, chúng tôi là & nbsp; xóa các dòng 5 và 8.: Don’t use def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
0 keywords to delete lines from a list and write the same list to file. Because when you delete a line from the list, the item’s index gets changed. So you will no longer be able to delete the correct line.
Mã của chúng tôi đã xóa hai dòng. Đây là dữ liệu hiện tại của một tệpHàm for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
4 thêm một bộ đếm vào một điều khác biệt (chẳng hạn như danh sách, chuỗi) và trả về nó trong đối tượng for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
1. Chúng tôi đã sử dụng đối tượng for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
1 với vòng lặp for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
8 để truy cập số dòng. for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
4 không tải toàn bộ danh sách trong bộ nhớ, vì vậy đây là một giải pháp hiệu quả. don’t need to open a file twice. - Lưu ý: Don Tiết sử dụng từ khóa
def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
0 để xóa các dòng khỏi danh sách và viết cùng một danh sách vào tệp. Bởi vì khi bạn xóa một dòng khỏi danh sách, chỉ mục của mục sẽ được thay đổi. Vì vậy, bạn sẽ không còn có thể xóa đúng dòng.read and write mode (def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
1) - Sử dụng phương thức Seek ()
- Điều tương tự có thể được thực hiện bằng phương thức Seek () bằng cách thay đổi vị trí con trỏ để chúng tôi không cần phải mở một tệp hai lần.pointer to the start of a file using
def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
2 method - Mở tệp trong chế độ đọc và ghi (
def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
1) - Đọc tất cả các dòng từ một tệp vào danh sách
- Di chuyển con trỏ tệp đến đầu tệp bằng phương thức
def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
2
Example:: with open(r"E:\demos\files\sample.txt", 'r+') as fp:
# read an store all lines into list
lines = fp.readlines()
# move file pointer to the beginning of a file
fp.seek(0)
# truncate the file
fp.truncate()
# start writing lines
# iterate line and line number
for number, line in enumerate(lines):
# delete line number 5 and 8
# note: list index start from 0
if number not in [4, 7]:
fp.write(line)
Lặp lại danh sách sử dụng chức năng Loop và for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
4Trong mỗi lần lặp viết dòng hiện tại vào tệp. Bỏ qua những số dòng mà bạn muốn xóa. - Xóa dòng đầu tiên và cuối cùng của một tệp
- Để xóa một cách chọn lọc một số nội dung nhất định khỏi tệp, chúng tôi cần sao chép nội dung của tệp ngoại trừ các dòng chúng tôi muốn xóa và viết lại các dòng còn lại vào cùng một tệp.
- Sử dụng các bước dưới đây để xóa dòng đầu tiên khỏi một tệp.
- Mở tệp ở chế độ đọc và ghi (
def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
1) - Đọc tất cả các dòng từ một tệp
with open(r"E:\demos\files\sample.txt", 'r+') as fp:
# read an store all lines into list
lines = fp.readlines()
# move file pointer to the beginning of a file
fp.seek(0)
# truncate the file
fp.truncate()
# start writing lines except the first line
# lines[1:] from line 2 to last line
fp.writelines(lines[1:])
Di chuyển con trỏ tệp khi bắt đầu tệp bằng phương thức def removeComments(inputFileName, outputFileName):
input = open(inputFileName, "r")
output = open(outputFileName, "w")
output.write(input.readline())
for line in input:
if not line.lstrip().startswith("#"):
output.write(line)
input.close()
output.close()
2
Cắt ngắn tệp First line
Second line
Third line
Fourth line
Sixth line
Seventh line Viết tất cả các dòng từ một tệp ngoại trừ dòng đầu tiên. for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
0Đầu ra. for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
1Trước khi xóa dòng đầu tiên for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
2Sử dụng ví dụ dưới đây để các bước để xóa dòng cuối cùng khỏi tệp for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
3Để xóa n dòng cuối cùng, sử dụng danh sách cắt.. for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
4Xóa các dòng khớp với văn bản (chuỗi)Giả sử các tệp chứa hàng trăm dòng và bạn muốn xóa các dòng khớp với chuỗi/văn bản đã cho. Hãy cùng xem cách xóa các dòng khớp với văn bản đã cho (khớp chính xác). Steps:: - Đọc tệp vào một danh sách
- Mở cùng một tệp trong chế độ ghi
- Lặp lại một danh sách và ghi từng dòng vào một tệp ngoại trừ các dòng khớp với chuỗi đã cho.
Ví dụ 1: Xóa các dòng khớp với văn bản đã cho (khớp chính xác): Delete lines that match the given text (exact match) for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
5Ngoài ra, bạn có thể đạt được nó bằng cách sử dụng vòng lặp duy nhất để nó sẽ nhanh hơn nhiều.single loop so it will be much faster. for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
6Xóa các dòng chứa một từ cụ thểChúng tôi có thể phải xóa các dòng khỏi một tệp chứa một từ khóa hoặc thẻ cụ thể trong một số trường hợp. Hãy cùng xem ví dụ để xóa các dòng khỏi tệp có chứa một chuỗi cụ thể ở bất cứ đâu trong dòng. Example:: for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
7Xóa các dòng bắt đầu bằng từ/chuỗi cụ thểTìm hiểu cách xóa các dòng khỏi một tệp bắt đầu bằng một từ cụ thể. Trong ví dụ sau, chúng tôi sẽ xóa các dòng bắt đầu bằng từ ‘Thời gian.time‘. Example:: for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
8Xóa văn bản cụ thể khỏi tệp văn bảnNó cũng có thể là trường hợp bạn muốn xóa một chuỗi cụ thể khỏi một tệp nhưng không phải là dòng chứa nó. Hãy cùng xem ví dụ về cùng một for i, line in enumerate(input_file):
if i == 0:
output.write(line)
else:
if not line.startswith('#'):
output.write(line)
9Để xóa tất cả các dòng trong một tệp và xóa tệp, chúng ta có thể sử dụng phương thức cắt ngắn () trên đối tượng tệp. Phương thức cắt () loại bỏ tất cả các dòng khỏi một tệp và đặt con trỏ tệp đến đầu tệp. for i, line in enumerate(input_file):
if i == 0 or not line.startswith('#'):
output.write(line)
0
Làm thế nào để bạn xóa các dòng khỏi một tệp trong Python?
Điều tương tự cũng có thể được thực hiện bằng phương thức Seek () bằng cách thay đổi vị trí con trỏ để chúng ta không cần mở tệp hai lần ... Mở tệp trong chế độ đọc và ghi (r+). Đọc tất cả các dòng từ một tệp vào danh sách .. Di chuyển con trỏ tệp đến đầu tệp bằng phương thức Seek () .. Cắt ngắn tệp bằng phương thức cắt ngắn () ..
Làm thế nào để bạn loại bỏ các dòng khỏi một chuỗi trong Python?
Phương pháp 1: Sử dụng hàm thay thế để xóa ký tự dòng mới khỏi chuỗi trong Python .. Phương pháp 2: Sử dụng hàm Dải () để xóa ký tự dòng mới khỏi chuỗi trong Python .. Phương pháp 4: Sử dụng RE.hàm sub () để xóa một ký tự dòng mới khỏi chuỗi trong python ..
Làm thế nào để bạn xóa nhiều dòng trong Python?
Xóa nhiều dòng khỏi một tệp theo số dòng Đọc nội dung từ một dòng tệp gốc từng dòng và cho mỗi dòng, hãy theo dõi số dòng.Nếu số dòng của dòng hiện tại khớp với số dòng trong danh sách các số đã cho, thì hãy bỏ qua dòng đó, thì hãy thêm dòng trong tệp tạm thời / giả.
Làm cách nào để loại bỏ các dòng in trong Python?
Trong Python2.x Bạn có thể thêm dấu phẩy (,) ở cuối câu lệnh in sẽ loại bỏ dòng mới khỏi python in.Một phương pháp khác mà bạn có thể sử dụng để in Python Không có dòng mới là mô-đun tích hợp có tên SYS.add a comma (,) at the end of the print statement that will remove newline from print Python. Another method that you can use for Python print no newline is the built-in module called sys. |