Hướng dẫn how do you read a line in a text file without an n in python? - Làm thế nào để bạn đọc một dòng trong tệp văn bản mà không có n trong python?

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]
1:

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]
2 Đường mới thay thế:

[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]
3 không phải là boolean, mà là đối tượng được đánh giá đúng hoặc sai.

Phương phá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]
4 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

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 giữ cho dòng mới cũ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]
6 giữ nó.

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

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 Phương phá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]
8 không thêm kết thúc Newlines, do đó
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 tạo ra một bản sao chính xác của
[line.rstrip['\n'] for line in file]
0 trong
[line.rstrip['\n'] for line in file]
1.
for symmetry to
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 the
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 method does not add ending newlines, so
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 produces an exact copy of
[line.rstrip['\n'] for line in file]
0 in
[line.rstrip['\n'] for line in file]
1.

Làm thế nào để đọc một tập tin không có Newlines trong Python?

Một dòng mới được sử dụng để đánh dấu sự kết thúc của một dòng và bắt đầu một dòng mới, và trong bài viết này, chúng tôi sẽ xem xét cách đọc một tệp trong Python mà không có những lần phá vỡ dòng mới này. & NBSP;

Để bắt đầu với chúng tôi sẽ tạo một tệp

[line.rstrip['\n'] for line in file]
2 đơn giản. Sau mỗi dòng văn bản, phím Enter/Return trên bàn phím được nhấn - tạo một dòng mới trong chính tệp. Điều này được hiển thị, chỉ cho mục đích minh họa, & nbsp; rõ ràng với các từ [trả về] bên dưới mà chúng tôi đang lưu trong một tệp có tên là ____ 33: & nbsp;

newline.txt:Hello[return]
my[return]
name[return]
is[return]
Rikesh.[return]

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

Bây giờ chúng tôi có tệp

[line.rstrip['\n'] for line in file]
2 cơ bản của chúng tôi, hãy để bắt đầu bằng cách xem những gì xảy ra khi chúng tôi mở và đọc tệp. Khi chúng tôi mở một tệp trong Python, chúng tôi có thể đọc nó bằng cách truyền tham số
[line.rstrip['\n'] for line in file]
5 trong câu lệnh mở của chúng tôi. Phương pháp đơn giản nhất để mở và đọc một tệp như sau: & nbsp;

file= open["newline.txt", "r"]
file.read[]
# 'Hello\nmy\nname\nis\nRikesh.\n'

Sử dụng phương pháp này, chúng ta có thể thấy rằng dòng mới đang được Python đọc và được đại diện bởi ký tự

[line.rstrip['\n'] for line in file]
6. Đây là nhân vật đặc biệt Python cho A & NBSP; NEWLINE. & NBSP; & NBSP; & NBSP;

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

[line.rstrip['\n'] for line in file]
8 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ố
[line.rstrip['\n'] for line in file]
9 và sẽ chạy câu lệnh A & nbsp; ____ ____ 40 để sắp xếp đầu ra của chúng tôi: & nbsp;

with open["newline.txt", "r"] as file: 
    line = file.read[]
    print[file]


Output:

Hello
 my
 name
 is
 Rikesh.

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]
0

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

[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
1 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]
1

Phương pháp Python

[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
2 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
[line.rstrip['\n'] for line in file]
7, 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]
2

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

[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
4 đượ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]
3

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

[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
4 được áp dụng cho mỗi chuỗi: & nbsp;

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

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

[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
4 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
[line.rstrip['\n'] for line in file]
7 làm tham số trong phương thức
[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
2 của chúng ta: & nbsp;

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

Trong khi phương thức

[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
4 ảnh hưởng đến cả hai không gian theo dõi và hàng đầu, chúng ta có thể sử dụng
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
0 để 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
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
1, 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ố
[line.rstrip['\n'] for line in file]
7 để đảm bảo chúng ta chỉ xóa các ký tự mới: & nbsp;

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

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

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
3. Như với & nbsp;
[line[:-[line[-1] == '\n'] or len[line]+1] for line in file]
4 Chúng tôi phải lặp lại tệp của mình: & nbsp;

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

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;

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

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à

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. Đ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;

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

Đầ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à

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. 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, chúng ta có thể làm 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
7. 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]
0

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,

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 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 cách nào để đọc một tệp văn bản mà không có N trong Python?

Làm thế nào để bạn bỏ qua một dòng mới trong khi đọc một tệp trong Python ?..
Sử dụng các phương thức dải [] và rstrip [] để đọc một dòng mà không có dòng mới trong Python ..
Sử dụng các phương thức Splitlines và Split [] để đọc một dòng mà không có dòng mới trong Python ..
Sử dụng cắt lát hoặc toán tử [] để đọc một dòng mà không có dòng mới trong Python ..

Làm thế nào để bạn đọc một dòng cụ thể trong một tệp trong Python?

Sử dụng readlines [] để đọc phạm vi dòng từ tệp, phương thức readlines [] đọc tất cả các dòng từ một tệp và lưu trữ nó trong danh sách. Bạn có thể sử dụng một số chỉ mục làm số dòng để trích xuất một tập hợp các dòng từ nó. Đây là cách đơn giản nhất để đọc một dòng cụ thể từ một tệp trong Python. The readlines[] method reads all lines from a file and stores it in a list. You can use an index number as a line number to extract a set of lines from it. This is the most straightforward way to read a specific line from a file in Python.

Làm thế nào để bạn thoát khỏi N trong một tệp văn bản 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 cách nào để đọc một dòng tệp văn bản từng dòng trong Python?

Phương pháp 1: Đọc một dòng theo từng dòng bằng cách sử dụng readlines [] readlines [] được sử dụng để đọc tất cả các dòng trong một lần và sau đó trả về chúng dưới dạng mỗi dòng một phần tử chuỗi trong một danh sách.Hàm này có thể được sử dụng cho các tệp nhỏ, vì nó đọc toàn bộ nội dung tệp vào bộ nhớ, sau đó chia nó thành các dòng riêng biệt.using readlines[] readlines[] is used to read all the lines at a single go and then return them as each line a string element in a list. This function can be used for small files, as it reads the whole file content to the memory, then split it into separate lines.

Bài Viết Liên Quan

Chủ Đề