Hướng dẫn python insert line after match - dòng chèn python sau trận đấu

Tôi đang cố gắng thêm các dòng cụ thể vào một khu vực cụ thể trong tệp của mình. Tôi đang sử dụng cái này:

new_file = open("file.txt", "r+")
 for line in new_file:
  if line == "; Include below":
     line = line + "\nIncluded text"
     new_file.write(line)
  else:
     new_file.write(line)

Nhưng vì một số lý do, nội dung của file.txt của tôi đang sao chép.

Chỉnh sửa: Nếu tệp của tôi trông giống như:

blablablablablablabal
balablablabalablablbla
include below
blablablablablabalablab
ablablablabalbalablaba

Tôi muốn làm cho nó trông giống như:

blablablablablablabal
balablablabalablablbla
include below
included text
blablablablablabalablab
ablablablabalbalablaba

Đã hỏi ngày 22 tháng 1 năm 2014 lúc 14:24Jan 22, 2014 at 14:24

Hướng dẫn python insert line after match - dòng chèn python sau trận đấu

3

Bạn không thể ghi một cách an toàn vào một tệp trong khi đọc, tốt hơn là đọc tệp vào bộ nhớ, cập nhật nó và viết lại nó vào tệp.

with open("file.txt", "r") as in_file:
    buf = in_file.readlines()

with open("file.txt", "w") as out_file:
    for line in buf:
        if line == "; Include this text\n":
            line = line + "Include below\n"
        out_file.write(line)

John Kugelman

339K67 Huy hiệu vàng514 Huy hiệu bạc563 Huy hiệu Đồng67 gold badges514 silver badges563 bronze badges

Đã trả lời ngày 22 tháng 1 năm 2014 lúc 14:48Jan 22, 2014 at 14:48

afkfurionafkfurionafkfurion

2.68717 Huy hiệu bạc12 Huy hiệu đồng17 silver badges12 bronze badges

Đây là những gì tôi đã làm.

def find_append_to_file(filename, find, insert):
    """Find and append text in a file."""
    with open(filename, 'r+') as file:
        lines = file.read()

        index = repr(lines).find(find) - 1
        if index < 0:
            raise ValueError("The text was not found in the file!")

        len_found = len(find) - 1
        old_lines = lines[index + len_found:]

        file.seek(index)
        file.write(insert)
        file.write(old_lines)
# end find_append_to_file

Đã trả lời ngày 22 tháng 1 năm 2014 lúc 15:04Jan 22, 2014 at 15:04

JustEngeljustengeljustengel

5,8643 Huy hiệu vàng25 Huy hiệu bạc40 Huy hiệu đồng3 gold badges25 silver badges40 bronze badges

Sử dụng

blablablablablablabal
balablablabalablablbla
include below
blablablablablabalablab
ablablablabalbalablaba
0:

$ sed '/^include below/aincluded text' < file.txt

Explanation:

  • blablablablablablabal
    balablablabalablablbla
    include below
    blablablablablabalablab
    ablablablabalbalablaba
    
    1: khớp với mọi dòng bắt đầu (
    blablablablablablabal
    balablablabalablablbla
    include below
    blablablablablabalablab
    ablablablabalbalablaba
    
    2) với
    blablablablablablabal
    balablablabalablablbla
    include below
    blablablablablabalablab
    ablablablabalbalablaba
    
    3
  • blablablablablablabal
    balablablabalablablbla
    include below
    blablablablablabalablab
    ablablablabalbalablaba
    
    4: Cộng đồng một dòng mới và văn bản sau
  • blablablablablablabal
    balablablabalablablbla
    include below
    blablablablablabalablab
    ablablablabalbalablaba
    
    5: văn bản mà
    blablablablablablabal
    balablablabalablablbla
    include below
    blablablablablabalablab
    ablablablabalbalablaba
    
    4 nối

Chỉnh sửa: Sử dụng Python: Using Python:

for line in open("file.txt").readlines():
    print(line, end="")
    if line.startswith("include below"):
        print("included text")

Đã trả lời ngày 22 tháng 1 năm 2014 lúc 14:40Jan 22, 2014 at 14:40

2

Xếp hạng chủ đề:

  • 0 Bầu chọn - trung bình 0
  • 1
  • 2
  • 3
  • 4
  • 5

Thêm một dòng sau một dòng cụ thể

Xin chào, tôi đang cố gắng thêm dòng mới sau một dòng cụ thể.

for line in file :
   if line.startswith('/22/'):
            #ADD LINE AFTER THIS line
            #WITH "TEST" AS CONTENT

Nhưng file.write ("test") thêm một dòng ở cuối tệp tôi muốn dòng "kiểm tra" được thêm vào sau dòng "/22/"
I want the "TEST" line to be added after the "/22/" line

Bài viết: 7.8127,812

Chủ đề: 144144

Tham gia: Tháng 9 năm 2016Sep 2016

Danh tiếng: 567 567

Bạn không thể chèn nó ở giữa. Bạn cần tạo tệp mới/khác nhau và viết vào đó. hoặc đọc mọi thứ trong bộ nhớ (bao gồm các dòng mới) và sau đó ghi đè lên tệp hiện có.
you need to create new/different file and write in it.
or read everything in the memory (incl. the new lines) and then overwrite the existing file.

Bài viết: 1919

Chủ đề: 66

Tham gia: tháng 8 năm 2018Aug 2018

Danh tiếng: 0 0

Điều này nghe có vẻ phức tạp, không? Tôi phải chèn dòng ở vị trí khác nhau trong cùng một tệp, tôi sẽ cần tạo như 4 tệp để thêm 4 dòng?
I have to insert line in different place in the same file, I would need to create like 4 files to add 4 lines ?

Bài viết: 7.8127,812

Chủ đề: 144144

Tham gia: Tháng 9 năm 2016Sep 2016

Danh tiếng: 567 567

Bạn không thể chèn nó ở giữa. Bạn cần tạo tệp mới/khác nhau và viết vào đó. hoặc đọc mọi thứ trong bộ nhớ (bao gồm các dòng mới) và sau đó ghi đè lên tệp hiện có. (This post was last modified: Aug-07-2018, 12:12 PM by buran.)

Bài viết: 19

input_file = 'input_file.txt' # '/path/to/inputfile.txt'
output_file = 'output_file.txt' # '/path/to/outputfile.txt'

with open(input_file) as in_file, open(output_file, 'w') as out_file:
    for line in in_file:
        out_file.write(line)
        if line.strip() == '/##/':
            out_file.write('TEST INSERT OF NEW LINE\n')

Chủ đề: 6
Tham gia: tháng 8 năm 2018 Danh tiếng: 0 Điều này nghe có vẻ phức tạp, không? Tôi phải chèn dòng ở vị trí khác nhau trong cùng một tệp, tôi sẽ cần tạo như 4 tệp để thêm 4 dòng? Tháng 8 năm 07-2018, 12:12 PM (Bài đăng này đã được sửa đổi lần cuối: tháng 8 năm 07-2018, 12:12 PM bởi Buran.) Không, bạn cần tạo thêm một tệp
& nbsp;Có thể các chủ đề liên quan…TESTER_V9 362 Tháng 8-22-2022, 09:04 PM Bài đăng cuối cùng: Tester_V
Last Post: Gribouillis
& nbsp;Biểu đồ dòng đồ họa với matplotlib, tệp văn bản trong pythoTESTER_V2 211 Tháng 8-22-2022, 09:04 PM Bài đăng cuối cùng: Tester_V
Last Post: tester_V
& nbsp;Biểu đồ dòng đồ họa với matplotlib, tệp văn bản trong pythoKhadija2 254 Tháng 8-15-2022, 12:00 tối Bài đăng cuối cùng: Khadija
Last Post: astral_travel
& nbsp;Xếp hạng chủ đề:0 Bầu chọn - trung bình 01 196 Thêm một dòng sau một dòng cụ thể
Last Post: snippsat
& nbsp; Xin chào, tôi đang cố gắng thêm dòng mới sau một dòng cụ thể.0 Bầu chọn - trung bình 05 260 Thêm một dòng sau một dòng cụ thể
Last Post: Yoriz
& nbsp; Xin chào, tôi đang cố gắng thêm dòng mới sau một dòng cụ thể.0 Bầu chọn - trung bình 05 340 Thêm một dòng sau một dòng cụ thể
Last Post: snippsat
& nbsp; Xin chào, tôi đang cố gắng thêm dòng mới sau một dòng cụ thể.Nhưng file.write ("test") thêm một dòng ở cuối tệp tôi muốn dòng "kiểm tra" được thêm vào sau dòng "/22/"4 240 Bài viết: 7.812
Last Post: buran
& nbsp;REGEX MULTI-LINEKucingkembar6 417 Tháng 8-27-2022, 10:27 PM Bài cuối cùng:
Last Post: kucingkembar
& nbsp;Dòng đầu tiên với các chữ số trước dòng cuối cùngTESTER_V5 473 Tháng 8-22-2022, 09:04 PM Bài đăng cuối cùng: Tester_V
Last Post: tester_V
& nbsp;Biểu đồ dòng đồ họa với matplotlib, tệp văn bản trong pythoKhadija2 489 Tháng 8-15-2022, 12:00 tối Bài đăng cuối cùng: Khadija
Last Post: khadija