Hướng dẫn python readlines without newline - dòng đọc python không có dòng mới

Bạn có thể đọc toàn bộ tệp và các dòng phân chia bằng

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
7:

temp = file.read().splitlines()

Hoặc bạn có thể tước dòng mới bằng tay:

temp = [line[:-1] for line in file]

Lưu ý: Giải pháp cuối cùng này chỉ hoạt động nếu tệp kết thúc bằng một dòng mới, nếu không dòng cuối cùng sẽ mất một ký tự. this last solution only works if the file ends with a newline, otherwise the last line will lose a character.

Giả định này là đúng trong hầu hết các trường hợp (đặc biệt là đối với các tệp được tạo bởi các trình chỉnh sửa văn bản, thường sẽ thêm một kết thúc Newline).

Nếu bạn muốn tránh điều này, bạn có thể thêm một dòng mới ở cuối tệp:

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]

Hoặc một giải pháp thay thế đơn giản hơn là

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
8 thay vào đó là dòng mới:

[line.rstrip('\n') for line in file]

Hoặc thậm chí, mặc dù khá không thể đọc được:

[line[:-(line[-1] == '\n') or len(line)+1] for line in file]

Trong đó khai thác thực tế là giá trị trả về của

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
9 không phải là boolean, mà là đối tượng được đánh giá đúng hoặc sai.


Phương pháp

[line.rstrip('\n') for line in file]
0 thực sự tương đương với:

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines

[line.rstrip('\n') for line in file]
1 giữ cho dòng mới cũng
[line.rstrip('\n') for line in file]
2 giữ nó.

Lưu ý: Đối với đối xứng với

[line.rstrip('\n') for line in file]
2 Phương pháp
[line.rstrip('\n') for line in file]
4 không thêm kết thúc Newlines, do đó
[line.rstrip('\n') for line in file]
5 tạo ra một bản sao chính xác của
[line.rstrip('\n') for line in file]
6 trong
[line.rstrip('\n') for line in file]
7.
for symmetry to
[line.rstrip('\n') for line in file]
2 the
[line.rstrip('\n') for line in file]
4 method does not add ending newlines, so
[line.rstrip('\n') for line in file]
5 produces an exact copy of
[line.rstrip('\n') for line in file]
6 in
[line.rstrip('\n') for line in file]
7.

Bạn có thể đọc toàn bộ tệp và các dòng phân chia bằng

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
7:

Nội phân chính

  • Bối cảnh: Mở và đọc một tập tin
  • Phương pháp 1: Tách với Splitlines () và Split (‘\ n,)
  • Phương pháp 2: Dải bằng dải () và rstrip () & nbsp;
  • Phương pháp 3: Cắt lát
  • Phương pháp 4: Thay thế
  • Làm thế nào để bạn xóa N khỏi một tệp văn bản trong Python?
  • Làm thế nào để bạn ngừng đọc N trong Python?
  • Làm cách nào để đọc một tệp văn bản trong Python?
  • Readline () có lấy \ n ở cuối dòng không?

temp = file.read().splitlines()

Thuộc tính của phương thức readline () Phương thức read () Phương thức chỉ đọc một dòng hoàn chỉnh tại một thời điểm. Nó thêm một dòng mới ("\ n") ở cuối mỗi dòng. Nó trả về một giá trị chuỗi nếu tệp được mở ở chế độ đọc bình thường. Phương thức này trả về đối tượng nhị phân nếu tệp được mở trong chế độ nhị phân.

Bạn có thể đọc toàn bộ tệp và các dòng phân chia bằng
with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
7:

Nội phân chính this last solution only works if the file ends with a newline, otherwise the last line will lose a character.

Bối cảnh: Mở và đọc một tập tin

Phương pháp 1: Tách với Splitlines () và Split (‘\ n,)

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]

Phương pháp 2: Dải bằng dải () và rstrip () & nbsp;

[line.rstrip('\n') for line in file]

Phương pháp 3: Cắt lát

[line[:-(line[-1] == '\n') or len(line)+1] for line in file]

Phương pháp 4: Thay thế


Hoặc bạn có thể tước dòng mới bằng tay:

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines

temp = [line[:-1] for line in file]

Lưu ý: Giải pháp cuối cùng này chỉ hoạt động nếu tệp kết thúc bằng một dòng mới, nếu không dòng cuối cùng sẽ mất một ký tự. for symmetry to

[line.rstrip('\n') for line in file]
2 the
[line.rstrip('\n') for line in file]
4 method does not add ending newlines, so
[line.rstrip('\n') for line in file]
5 produces an exact copy of
[line.rstrip('\n') for line in file]
6 in
[line.rstrip('\n') for line in file]
7.

Giả định này là đúng trong hầu hết các trường hợp (đặc biệt là đối với các tệp được tạo bởi các trình chỉnh sửa văn bản, thường sẽ thêm một kết thúc Newline).

Nếu bạn muốn tránh điều này, bạn có thể thêm một dòng mới ở cuối tệp:

Hoặc một giải pháp thay thế đơn giản hơn là

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
8 thay vào đó là dòng mới:

temp = [line[:-1] for line in file]
2
  • Bối cảnh: Mở và đọc một tập tin
  • Phương pháp 1: Tách với Splitlines () và Split (‘\ n,)
  • Phương pháp 2: Dải bằng dải () và rstrip () & nbsp;
  • Phương pháp 3: Cắt lát
  • Phương pháp 4: Thay thế
  • Bản tóm tắt

Bối cảnh: Mở và đọc một tập tin

Phương pháp 1: Tách với Splitlines () và Split (‘\ n,)

temp = [line[:-1] for line in file]
3

Phương pháp 2: Dải bằng dải () và rstrip () & nbsp;

Cách mở các tệp trong Python sạch hơn nhiều là sử dụng câu lệnh

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
5 vì điều này sẽ tự động đóng tệp sau khi kết thúc. Chúng tôi sẽ tiếp tục đọc tệp bằng tham số
def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
6 và sẽ chạy câu lệnh A & NBSP; ____ 57 để sắp xếp đầu ra của chúng tôi: & nbsp;

temp = [line[:-1] for line in file]
4

Output:

temp = [line[:-1] for line in file]
5

Mặc dù nó có thể xuất hiện khác với ví dụ trước, bằng cách sử dụng câu lệnh in của chúng tôi, chúng tôi vừa yêu cầu Python thực hiện mã dòng mới. Thực tế, đầu ra của chúng tôi trông như thế này: & nbsp;

temp = [line[:-1] for line in file]
6

Phương pháp 1: Tách với Splitlines () và Split (‘\ n,)

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
8 là một phương thức Python chia một chuỗi vào một danh sách, trong đó mỗi dòng là một mục danh sách. Theo mặc định, phương thức này chia dòng tại mức độ ngắt mới: & nbsp;

temp = [line[:-1] for line in file]
7

Phương pháp Python

def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
9 có hiệu quả thực hiện điều tương tự, nhưng chúng ta có thể chỉ định phân tách, tức là, tại thời điểm đó chúng ta muốn sự phân chia diễn ra. Trong ví dụ của chúng tôi, nó sẽ ở nhân vật
def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
4, như chúng ta đã thấy là đại diện Python của một dòng mới:

temp = [line[:-1] for line in file]
8

Mặc dù cả hai phương thức này sẽ loại bỏ các dòng mới, theo mặc định, mỗi dòng văn bản ban đầu của chúng tôi đã được trả lại dưới dạng một mục riêng trong danh sách. Điều này, rõ ràng, có chức năng hạn chế trừ khi tệp ban đầu của chúng tôi chứa các mục chuỗi riêng lẻ mà chúng tôi muốn giữ tách biệt ngay từ đầu - ví dụ: một danh sách các số. Trong ví dụ của chúng tôi, với một tệp chỉ có văn bản thuần túy, đầu ra ít hữu ích hơn.

Phương pháp 2: Dải bằng dải () và rstrip () & nbsp;

Trong Python, phương pháp

temp = file.read().splitlines()
1 được sử dụng để loại bỏ các khoảng trống ở đầu (dẫn đầu) & nbsp; và kết thúc (dấu vết) của một chuỗi. Theo mặc định, điều này không chỉ bao gồm các không gian trắng mà cả các ký tự mới. Điều này sẽ được minh họa tốt hơn với một số thay đổi nhỏ đối với tệp ban đầu của chúng tôi: & nbsp;

temp = [line[:-1] for line in file]
9

Mặc dù văn bản thực tế là giống nhau, chúng tôi đã thêm một số khoảng trắng trước và sau các mục văn bản của chúng tôi. Điều cuối cùng cần lưu ý với phương pháp này là, vì nó hoạt động thông qua tệp của chúng tôi trên cơ sở chuỗi theo chuỗi, chúng tôi cần lặp lại tệp của mình để đảm bảo

temp = file.read().splitlines()
1 được áp dụng cho mỗi chuỗi: & nbsp;

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
0

Như chúng ta có thể thấy, phương pháp

temp = file.read().splitlines()
1 không chỉ loại bỏ dòng mới mà tất cả các không gian trắng hàng đầu và theo dõi. Trong khi đây có thể là một tính năng hữu ích, điều gì sẽ xảy ra nếu chúng ta muốn giữ & nbsp; khoảng trắng và chỉ loại bỏ nhân vật Newline? Chà, chúng ta có thể làm điều này bằng cách truyền
def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
4 làm tham số trong phương thức
def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
9 của chúng ta: & nbsp;

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
1

Trong khi phương thức

temp = file.read().splitlines()
1 ảnh hưởng đến cả hai không gian theo dõi và hàng đầu, chúng ta có thể sử dụng
temp = file.read().splitlines()
7 để chỉ xóa các ký tự kéo dài, tức là, các ký tự ở cuối chuỗi. Khi đường phát ra mới có xu hướng ở cuối chuỗi, phương pháp này được ưu tiên hơn
temp = file.read().splitlines()
8, chỉ ảnh hưởng đến các ký tự ở đầu chuỗi. Một lần nữa, chúng ta có thể vượt qua tham số
def readlines(self):
    lines = []
    for line in iter(self.readline, ''):
        lines.append(line)
    return lines

# or equivalently

def readlines(self):
    lines = []
    while True:
        line = self.readline()
        if not line:
            break
        lines.append(line)
    return lines
4 để đảm bảo chúng ta chỉ xóa các ký tự mới: & nbsp;

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
2

Phương pháp 3: Cắt lát

Một cách khác để loại bỏ dòng mới là bằng cách cắt, nhưng cần lưu ý rằng điều này nên được sử dụng một cách thận trọng vì nó ít được nhắm mục tiêu hơn các phương pháp khác của chúng tôi. Với việc cắt lát, chúng ta có thể yêu cầu Python loại bỏ ký tự cuối cùng của mỗi chuỗi, thông qua việc cắt âm

temp = [line[:-1] for line in file]
0. Như với & nbsp;
temp = file.read().splitlines()
1 Chúng tôi phải lặp lại tệp của mình: & nbsp;

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
3

Tuy nhiên, xin lưu ý rằng việc cắt lát là bừa bãi - nó sẽ không quan tâm nhân vật cuối cùng là gì và chúng ta không thể chỉ định điều này. Vì vậy, mặc dù nó hoạt động khi tệp ban đầu của chúng tôi nhất quán và có tất cả các dòng mới bị phá vỡ ở đúng nơi, điều gì xảy ra nếu đó không phải là trường hợp? Hãy để thay đổi tệp gốc của chúng tôi để làm cho nó ít nhất quán hơn và giống như loại tệp trong thế giới thực mà chúng ta có thể sẽ xử lý: & NBSP;

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
4

Trong tệp này, điểm dừng và trả lại đầy đủ ở cuối dòng cuối cùng đã được xóa, vì vậy ký tự cuối cùng cho tập lệnh đó là

temp = [line[:-1] for line in file]
2. Điều quan trọng cần lưu ý, & nbsp; không có khoảng trắng hoặc trả về sau nhân vật này. Bây giờ, nếu chúng ta thử cắt tập tin này: & nbsp;

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
5

Đầu ra đã cắt lát (băm nhỏ) nhân vật cuối cùng của tên tôi. Do đó, chúng tôi cần chắc chắn về tính toàn vẹn & nbsp; và định dạng tệp gốc của chúng tôi trước khi chúng tôi có thể sử dụng phương pháp này, nếu không chúng tôi có nguy cơ mất dữ liệu.

Phương pháp 4: Thay thế

Phương pháp cuối cùng chúng ta sẽ xem xét là

temp = [line[:-1] for line in file]
3. Như tên cho thấy, chúng ta có thể sử dụng điều này để thay thế một cụm từ cụ thể trong chuỗi của chúng ta bằng một cụm từ cụ thể khác. Như chúng ta mong đợi sự phá vỡ dòng mới sẽ được sử dụng khi có một loại phá vỡ logic nào đó trong văn bản của chúng ta, một sự lựa chọn rõ ràng sẽ thay thế nó bằng một khoảng trắng, mà chúng ta có thể làm với
temp = [line[:-1] for line in file]
4. Phương pháp này, cũng yêu cầu chúng tôi lặp lại tệp của chúng tôi: & nbsp;

with open(the_file, 'r+') as f:
    f.seek(-1, 2)  # go at the end of the file
    if f.read(1) != '\n':
        # add missing newline if not already present
        f.write('\n')
        f.flush()
        f.seek(0)
    lines = [line[:-1] for line in f]
6

Trong khi điều này đã cho chúng ta được định dạng sạch nhất trong tất cả các ví dụ của chúng ta, điều này chỉ là do định dạng của tệp gốc của chúng ta. Tuy nhiên,

temp = [line[:-1] for line in file]
3 có tính linh hoạt để cho phép các ký tự dòng mới được thay thế bằng bất cứ thứ gì phù hợp nhất cho tệp cụ thể của chúng tôi. & NBSP;

Bản tóm tắt

Chúng tôi đã thấy một số phương pháp khác nhau để đọc một tệp không có dòng mới. Mỗi người đều có hiệu quả theo cách riêng của nó và thực hiện công việc loại bỏ Newlines của chúng tôi, vì vậy không có câu trả lời đúng. Phương pháp chính xác sẽ phụ thuộc vào tệp gốc mà chúng tôi đang làm việc, cả về nội dung (văn bản thuần túy, số nguyên) và định dạng (không gian trắng, tính nhất quán). & Nbsp;

Nếu bạn cần giữ các vật phẩm tách biệt, chia tách có thể là lựa chọn tốt nhất. Nếu bạn cần kết hợp đầu ra thay thế hoặc tước có thể là câu trả lời. Mở và đọc tệp trước, không có bất kỳ định dạng nào để đánh giá nội dung và cấu trúc tệp, sẽ là bước quan trọng nhất trong việc quyết định phương pháp nào phù hợp nhất với nhu cầu của bạn.

Làm thế nào để bạn xóa N khỏi một tệp văn bản trong Python?

Sử dụng hàm Dải () để xóa ký tự dòng mới khỏi chuỗi trong Python. Hàm Dải () được sử dụng để loại bỏ cả hai đường dẫn và hàng đầu từ chuỗi mà nó đang được vận hành. Nó cũng loại bỏ các khoảng trắng ở cả hai bên của chuỗi. to Remove a Newline Character From the String in Python. The strip() function is used to remove both trailing and leading newlines from the string that it is being operated on. It also removes the whitespaces on both sides of the string.

Làm thế nào để bạn ngừng đọc N trong Python?

Linked..

342. Loại bỏ \ n khi sử dụng .ReadLines ().

Xóa ký tự mới trong danh sách đọc từ một tệp ..

Để đọc dòng từ tệp mà không nhận được "\ n" được thêm vào cuối ..

Đọc tệp vào danh sách và dải Newlines ..

File.Readlines để lại các dòng trống ..

Đọc tệp TXT vào danh sách không có Newlines trong Python ..

Làm cách nào để đọc một tệp văn bản trong Python?

Để đọc một tệp văn bản trong Python, bạn làm theo các bước sau: Đầu tiên, hãy mở một tệp văn bản để đọc bằng cách sử dụng hàm Open (). Thứ hai, đọc văn bản từ tệp văn bản bằng cách sử dụng phương thức read (), readline () hoặc readlines () của đối tượng tệp. Thứ ba, đóng tệp bằng phương thức đóng tệp ().

Readline () có lấy \ n ở cuối dòng không?

Thuộc tính của phương thức readline () Phương thức read () Phương thức chỉ đọc một dòng hoàn chỉnh tại một thời điểm. Nó thêm một dòng mới ("\ n") ở cuối mỗi dòng. Nó trả về một giá trị chuỗi nếu tệp được mở ở chế độ đọc bình thường. Phương thức này trả về đối tượng nhị phân nếu tệp được mở trong chế độ nhị phân.It adds a newline ( "\n" ) at the end of every line. It returns a string value if the file is opened in normal read “r” mode. This method returns the binary object if the file is opened in the binary mode “b”.