Hướng dẫn replace line breaks python - thay thế ngắt dòng python

How do you enter line breaks with

f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
2? But, once you have a string with some characters in it you want to get rid of, just
f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
3 them.

>>> mystr = raw_input('please enter string: ')
please enter string: hello world, how do i enter line breaks?
>>> # pressing enter didn't work...
...
>>> mystr
'hello world, how do i enter line breaks?'
>>> mystr.replace(' ', '')
'helloworld,howdoienterlinebreaks?'
>>>

In the example above, I replaced all spaces. The string

f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
4 represents newlines. And
f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
5 represents carriage returns (if you're on windows, you might be getting these and a second
f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
3 will handle them for you!).

basically:

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')

Note also, that it is a bad idea to call your variable

f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
7, as this shadows the module
f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
7. Another name I'd avoid but would love to use sometimes:
f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file
9. For the same reason.

Tôi muốn lặp lại nội dung của tệp văn bản và thực hiện tìm kiếm và thay thế trên một số dòng và viết kết quả trở lại tệp. Trước tiên tôi có thể tải toàn bộ tệp trong bộ nhớ và sau đó viết lại, nhưng đó có lẽ không phải là cách tốt nhất để làm điều đó.

Nội dung chính ShowShow

  • Làm thế nào để bạn thay thế một dòng cụ thể trong một tệp?
  • Logic để thay thế dòng cụ thể trong một tệp văn bản..
  • Làm thế nào để bạn thay thế một chuỗi trong một dòng trong Python?
  • Làm thế nào để bạn thay thế một từ trong một dòng trong Python?

Phương thức python String thay thế () Phương thức thay thế () thay thế một cụm từ được chỉ định bằng một cụm từ được chỉ định khác.Lưu ý: Tất cả các lần xuất hiện của cụm từ được chỉ định sẽ được thay thế, nếu không có gì khác được chỉ định.The replace() method replaces a specified phrase with another specified phrase. Note: All occurrences of the specified phrase will be replaced, if nothing else is specified.

f = open(file)
for line in f:
    if line.contains('foo'):
        newline = line.replace('foo', 'bar')
        # how to write this newline back to the file

Tôi muốn lặp lại nội dung của tệp văn bản và thực hiện tìm kiếm và thay thế trên một số dòng và viết kết quả trở lại tệp. Trước tiên tôi có thể tải toàn bộ tệp trong bộ nhớ và sau đó viết lại, nhưng đó có lẽ không phải là cách tốt nhất để làm điều đó.

Nội dung chính Show64 gold badges301 silver badges291 bronze badges

Làm thế nào để bạn thay thế văn bản trong một tệp trong Python? Sep 2, 2008 at 9:19

0

Cách tốt nhất để làm điều này, trong mã sau là gì?

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2

Silentghost

  1. 294K64 Huy hiệu vàng301 Huy hiệu bạc291 Huy hiệu Đồng64 gold badges301 silver badges291 bronze badges
  2. hỏi ngày 2 tháng 9 năm 2008 lúc 9:19Sep 2, 2008 at 9:19
  3. Cách ngắn nhất có thể là sử dụng mô -đun FileInput. Ví dụ: sau đây thêm số dòng vào một tệp, tại chỗ:
Điều gì xảy ra ở đây là:

Tệp gốc được chuyển sang tệp sao lưu

Đầu ra tiêu chuẩn được chuyển hướng đến tệp gốc trong vòng lặp

Do đó, bất kỳ câu lệnh

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
5 nào ghi lại vào tệp gốc

  1. import fileinput
    
    for line in fileinput.input("test.txt", inplace=True):
        print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
        # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
    
    6 có nhiều chuông và còi hơn. Ví dụ: nó có thể được sử dụng để tự động hoạt động trên tất cả các tệp trong
    import fileinput
    
    for line in fileinput.input("test.txt", inplace=True):
        print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
        # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
    
    7 mà không cần phải lặp lại chúng một cách rõ ràng. Bắt đầu với Python 3.2, nó cũng cung cấp Trình quản lý bối cảnh thuận tiện để sử dụng trong câu lệnh
    import fileinput
    
    for line in fileinput.input("test.txt", inplace=True):
        print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
        # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
    
    8.
  2. Mặc dù

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
6 là tuyệt vời cho các kịch bản vứt bỏ, tôi sẽ cảnh giác khi sử dụng nó trong mã thực bởi vì phải thừa nhận rằng nó không dễ đọc hoặc quen thuộc. Trong mã thực (sản xuất), thật đáng để chi tiêu thêm một vài dòng mã để làm cho quy trình rõ ràng và do đó làm cho mã có thể đọc được.

Có hai tùy chọn:3 gold badges20 silver badges37 bronze badges

Tệp không quá lớn và bạn chỉ có thể đọc nó hoàn toàn vào bộ nhớ. Sau đó đóng tệp, mở lại nó ở chế độ viết và viết lại nội dung đã sửa đổi.Nov 14, 2008 at 15:47

Tệp quá lớn để được lưu trữ trong bộ nhớ; Bạn có thể chuyển nó sang một tệp tạm thời và mở nó, đọc từng dòng, ghi lại vào tệp gốc. Lưu ý rằng điều này đòi hỏi hai lần lưu trữ.Eli Bendersky

Alex Altair87 gold badges344 silver badges406 bronze badges

15

2.8863 huy hiệu vàng20 Huy hiệu bạc37 Huy hiệu đồng3 gold badges20 silver badges37 bronze badges

from tempfile import mkstemp
from shutil import move, copymode
from os import fdopen, remove

def replace(file_path, pattern, subst):
    #Create temp file
    fh, abs_path = mkstemp()
    with fdopen(fh,'w') as new_file:
        with open(file_path) as old_file:
            for line in old_file:
                new_file.write(line.replace(pattern, subst))
    #Copy the file permissions from the old file to the new file
    copymode(file_path, abs_path)
    #Remove original file
    remove(file_path)
    #Move new file
    move(abs_path, file_path)

Đã trả lời ngày 14 tháng 11 năm 2008 lúc 15:47Nov 14, 2008 at 15:47Sep 2, 2008 at 9:42

Eli Benderskyeli BenderskyEli BenderskyThomas Watnedal

253K87 Huy hiệu vàng344 Huy hiệu bạc406 Huy hiệu đồng87 gold badges344 silver badges406 bronze badges4 gold badges23 silver badges23 bronze badges

9

Tôi đoán một cái gì đó như thế này nên làm điều đó. Về cơ bản, nó ghi nội dung vào một tệp mới và thay thế tệp cũ bằng tệp mới:

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
0

Ví dụ sử dụng:

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
1

người đàn ông thiếc

156K41 Huy hiệu vàng209 Huy hiệu bạc297 Huy hiệu Đồng41 gold badges209 silver badges297 bronze badges41 gold badges209 silver badges297 bronze badges

Đã trả lời ngày 24 tháng 11 năm 2008 lúc 19:02Nov 24, 2008 at 19:02Nov 24, 2008 at 19:02

JasonjasonJasonJason

2.65127 Huy hiệu bạc28 Huy hiệu đồng27 silver badges28 bronze badges27 silver badges28 bronze badges

4

Điều này sẽ hoạt động: (Chỉnh sửa tại chỗ)

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
2

Gringo Suave

28.4K6 Huy hiệu vàng84 Huy hiệu bạc74 Huy hiệu đồng6 gold badges84 silver badges74 bronze badges6 gold badges84 silver badges74 bronze badges

Đã trả lời ngày 7 tháng 9 năm 2009 lúc 10:07Sep 7, 2009 at 10:07Sep 7, 2009 at 10:07

KinlankinlanKinlanKinlan

16.1K5 Huy hiệu vàng55 Huy hiệu bạc87 Huy hiệu đồng5 gold badges55 silver badges87 bronze badges5 gold badges55 silver badges87 bronze badges

4

Dựa trên câu trả lời của Thomas Watnedal. Tuy nhiên, điều này không trả lời chính xác phần trực tiếp của câu hỏi ban đầu. Chức năng vẫn có thể thay thế trên cơ sở trực tiếp

Việc triển khai này thay thế các nội dung tệp mà không cần sử dụng các tệp tạm thời, do đó, các quyền của tệp vẫn không thay đổi.

Ngoài ra RE.Sub thay vì thay thế, cho phép thay thế Regex thay vì chỉ thay thế văn bản đơn giản.

Đọc tệp dưới dạng một chuỗi thay vì từng dòng cho phép kết hợp và thay thế đa dòng.

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
3

Đã trả lời ngày 30 tháng 11 năm 2012 lúc 8:51Nov 30, 2012 at 8:51Nov 30, 2012 at 8:51

ThijsthijsThijsThijs

2593 Huy hiệu bạc4 Huy hiệu đồng3 silver badges4 bronze badges3 silver badges4 bronze badges

2

Như Lassevk gợi ý, hãy viết ra tệp mới khi bạn đi, đây là một số mã ví dụ:

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
4

Đã trả lời ngày 2 tháng 9 năm 2008 lúc 9:42Sep 2, 2008 at 9:42Sep 2, 2008 at 9:42

Thomas Watnedalthomas Watnedalhamishmcnhamishmcn

4.7934 Huy hiệu vàng23 Huy hiệu bạc23 Huy hiệu Đồng10 gold badges40 silver badges46 bronze badges10 gold badges40 silver badges46 bronze badges

Đây là một ví dụ khác đã được kiểm tra và sẽ phù hợp với các mẫu tìm kiếm và thay thế:

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
5

Ví dụ sử dụng:Feb 18, 2014 at 14:43Feb 18, 2014 at 14:43

0

người đàn ông thiếc

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
6

156K41 Huy hiệu vàng209 Huy hiệu bạc297 Huy hiệu Đồng

Đã trả lời ngày 24 tháng 11 năm 2008 lúc 19:02

Jasonjason3 gold badges12 silver badges26 bronze badges3 gold badges12 silver badges26 bronze badges

2.65127 Huy hiệu bạc28 Huy hiệu đồngSep 7, 2013 at 18:39Sep 7, 2013 at 18:39

Điều này sẽ hoạt động: (Chỉnh sửa tại chỗ)KiranKiran

Gringo Suave1 gold badge11 silver badges24 bronze badges1 gold badge11 silver badges24 bronze badges

1

28.4K6 Huy hiệu vàng84 Huy hiệu bạc74 Huy hiệu đồng

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
0

Explanation:

  • Đã trả lời ngày 7 tháng 9 năm 2009 lúc 10:07
  • Kinlankinlan
  • 16.1K5 Huy hiệu vàng55 Huy hiệu bạc87 Huy hiệu đồng

Dựa trên câu trả lời của Thomas Watnedal. Tuy nhiên, điều này không trả lời chính xác phần trực tiếp của câu hỏi ban đầu. Chức năng vẫn có thể thay thế trên cơ sở trực tiếp

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
1

Việc triển khai này thay thế các nội dung tệp mà không cần sử dụng các tệp tạm thời, do đó, các quyền của tệp vẫn không thay đổi.Oct 3, 2019 at 10:37

Ngoài ra RE.Sub thay vì thay thế, cho phép thay thế Regex thay vì chỉ thay thế văn bản đơn giản.Akif

Đọc tệp dưới dạng một chuỗi thay vì từng dòng cho phép kết hợp và thay thế đa dòng.2 gold badges39 silver badges41 bronze badges

1

Đã trả lời ngày 30 tháng 11 năm 2012 lúc 8:51Nov 30, 2012 at 8:51

ThijsthijsThijsSep 2, 2008 at 9:24

2593 Huy hiệu bạc4 Huy hiệu đồng3 silver badges4 bronze badgesLasse V. Karlsen

Như Lassevk gợi ý, hãy viết ra tệp mới khi bạn đi, đây là một số mã ví dụ:98 gold badges620 silver badges805 bronze badges

Đã trả lời ngày 2 tháng 9 năm 2008 lúc 9:42Sep 2, 2008 at 9:42

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
2

Thomas Watnedalthomas WatnedalhamishmcnMay 2, 2014 at 11:15

4.7934 Huy hiệu vàng23 Huy hiệu bạc23 Huy hiệu Đồng10 gold badges40 silver badges46 bronze badgesigniteflow

Đây là một ví dụ khác đã được kiểm tra và sẽ phù hợp với các mẫu tìm kiếm và thay thế:10 gold badges37 silver badges46 bronze badges

1

Ví dụ sử dụng:Feb 18, 2014 at 14:43

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
3

# you probably want to use a space ' ' to replace `\n`
mystring = mystring.replace('\n', ' ').replace('\r', '')
6 Apr 17, 2014 at 2:13

156K41 Huy hiệu vàng209 Huy hiệu bạc297 Huy hiệu ĐồngEmmanuel

Đã trả lời ngày 24 tháng 11 năm 2008 lúc 19:021 silver badge5 bronze badges

1

Jasonjason3 gold badges12 silver badges26 bronze badges

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    print('{} {}'.format(fileinput.filelineno(), line), end='') # for Python 3
    # print "%d: %s" % (fileinput.filelineno(), line), # for Python 2
4

2.65127 Huy hiệu bạc28 Huy hiệu đồngSep 7, 2013 at 18:39Aug 2, 2012 at 19:12

1

Điều này sẽ hoạt động: (Chỉnh sửa tại chỗ)Kiran

Gringo Suave1 gold badge11 silver badges24 bronze badges.

28.4K6 Huy hiệu vàng84 Huy hiệu bạc74 Huy hiệu đồng

Explanation:

Đã trả lời ngày 7 tháng 9 năm 2009 lúc 10:07

Kinlankinlan

16.1K5 Huy hiệu vàng55 Huy hiệu bạc87 Huy hiệu đồng

Việc triển khai này thay thế các nội dung tệp mà không cần sử dụng các tệp tạm thời, do đó, các quyền của tệp vẫn không thay đổi.Oct 3, 2019 at 10:37

Ngoài ra RE.Sub thay vì thay thế, cho phép thay thế Regex thay vì chỉ thay thế văn bản đơn giản.Akif.

Đọc tệp dưới dạng một chuỗi thay vì từng dòng cho phép kết hợp và thay thế đa dòng.2 gold badges39 silver badges41 bronze badges

Đã trả lời ngày 30 tháng 11 năm 2012 lúc 8:51

Đã trả lời ngày 2 tháng 9 năm 2008 lúc 9:24Sep 2, 2008 at 9:24

Đóng cả tệp đầu vào và đầu ra ..

Làm thế nào để bạn thay thế một chuỗi trong một dòng trong Python?

Cú pháp thay thế ()...

Cú pháp: String.replace (cũ, mới, đếm).

Parameters:.

Giá trị trả về: Nó trả về một bản sao của chuỗi trong đó tất cả các lần xuất hiện của một chuỗi con được thay thế bằng một chuỗi con khác ..

Làm thế nào để bạn thay thế một từ trong một dòng trong Python?

Phương thức python String thay thế () Phương thức thay thế () thay thế một cụm từ được chỉ định bằng một cụm từ được chỉ định khác.Lưu ý: Tất cả các lần xuất hiện của cụm từ được chỉ định sẽ được thay thế, nếu không có gì khác được chỉ định.The replace() method replaces a specified phrase with another specified phrase. Note: All occurrences of the specified phrase will be replaced, if nothing else is specified.The replace() method replaces a specified phrase with another specified phrase. Note: All occurrences of the specified phrase will be replaced, if nothing else is specified.