Hướng dẫn python read file until character - python đọc tệp cho đến ký tự

Tôi hiện đang làm việc trên một ứng dụng yêu cầu đọc tất cả các đầu vào từ một tệp cho đến khi gặp một ký tự nhất định.

Bằng cách sử dụng mã:

file=open["Questions.txt",'r']
c=file.readlines[]
c=[x.strip[] for x in c]

Mỗi khi dải gặp

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
0, nó được xóa khỏi đầu vào và được coi là một chuỗi trong danh sách
1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
1.

Điều này có nghĩa là mọi dòng được chia thành một phần của danh sách

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
1. Nhưng tôi muốn lập một danh sách lên đến một điểm bất cứ khi nào một nhân vật đặc biệt gặp phải như thế này:I want to make a list up to a point whenever a special character is encountered like this:

Nếu tệp đầu vào có nội dung:

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1

Sau đó, tôi muốn nhận một danh sách là

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
3

Xin hãy giúp tôi làm điều này.

Yannis

1.5927 Huy hiệu vàng25 Huy hiệu bạc45 Huy hiệu Đồng7 gold badges25 silver badges45 bronze badges

Hỏi ngày 21 tháng 12 năm 2017 lúc 14:29Dec 21, 2017 at 14:29

1

Cách dễ nhất sẽ là đọc tệp trong một chuỗi duy nhất và sau đó chia nó qua dấu phân cách của bạn:

with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here

Trong trường hợp, tệp của bạn rất lớn, việc giữ các nội dung hoàn chỉnh trong bộ nhớ dưới dạng một chuỗi để sử dụng

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
4 có thể không mong muốn [và sau đó giữ các nội dung hoàn chỉnh trong danh sách sau khi phân chia có lẽ cũng không mong muốn]. Sau đó, bạn có thể đọc nó trong các khối:

def each_chunk[stream, separator]:
  buffer = ''
  while True:  # until EOF
    chunk = stream.read[CHUNK_SIZE]  # I propose 4096 or so
    if not chunk:  # EOF?
      yield buffer
      break
    buffer += chunk
    while True:  # until no separator is found
      try:
        part, buffer = buffer.split[separator, 1]
      except ValueError:
        break
      else:
        yield part

with open['myFileName'] as myFile:
  for chunk in each_chunk[myFile, separator='\\-1\n']:
    print[chunk]  # not holding in memory, but printing chunk by chunk

Đã trả lời ngày 21 tháng 12 năm 2017 lúc 14:47Dec 21, 2017 at 14:47

AlfealfeAlfe

53,8K19 Huy hiệu vàng100 Huy hiệu bạc153 Huy hiệu đồng19 gold badges100 silver badges153 bronze badges

1

Tôi đã sử dụng "*" thay vì "-1", tôi sẽ cho phép bạn thực hiện các thay đổi thích hợp.

s = '1.Hai\n2.Bye*3.Hello\n4.OAPd*'
temp = ''
results = []

for char in s:
    if char is '*':
        results.append[temp]
        temp = []
    else:
        temp += char

if len[temp] > 0:
    results.append[temp]

Đã trả lời ngày 21 tháng 12 năm 2017 lúc 14:45Dec 21, 2017 at 14:45

1

Đọc một tệp cho đến khi một ký tự cụ thể trong Python #

Để đọc một tệp cho đến khi một ký tự cụ thể:

  1. Mở tệp ở chế độ đọc.
  2. Sử dụng phương thức
    1.Hai
    2.Bye\-1
    3.Hello
    4.OAPd\-1
    
    5 để đọc nội dung của tệp vào một chuỗi.
  3. Sử dụng phương thức
    1.Hai
    2.Bye\-1
    3.Hello
    4.OAPd\-1
    
    6 để phân chia tệp trên ký tự đã cho.
  4. Truy cập danh sách tại Index
    1.Hai
    2.Bye\-1
    3.Hello
    4.OAPd\-1
    
    7.

Copied!

with open['example.txt', 'r', encoding='utf-8'] as file: contents = file.read[] character = '!' result = contents.split[character] print[result] # 👉️ ['bobby\nhadz\n.com\n', '\none\ntwo\nthree'] # bobby # hadz # .com print[result[0]]

Nếu bạn đang làm việc với các tệp rất lớn, hãy cuộn xuống tiêu đề tiếp theo.

Mẫu mã giả định rằng bạn có một tệp

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
8 nằm trong cùng một thư mục.

Copied!

bobby hadz .com ! one two three

Chúng tôi đã sử dụng câu lệnh

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
9 để mở tệp ở chế độ đọc.

Câu lệnh tự động chăm sóc đóng tệp cho chúng tôi.

Phương thức

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
5 được sử dụng để đọc nội dung của toàn bộ tệp thành một chuỗi.

Nếu bạn làm việc với các tệp rất lớn mà bạn không muốn tải trong bộ nhớ, hãy cuộn xuống tiêu đề tiếp theo.

Khi chúng tôi có nội dung của tệp được lưu trữ trong một chuỗi, chúng tôi sử dụng phương thức

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
6 để phân chia chuỗi trên ký tự đã cho.

Phương thức str.split [] chia chuỗi thành một danh sách các chuỗi con bằng cách sử dụng dấu phân cách.

Phương thức lấy 2 tham số sau:

TênSự mô tả
máy tách biệtChia chuỗi thành chuỗi con trên mỗi lần xuất hiện
MaxSplitNhiều nhất
with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here
2 chia tách được thực hiện [tùy chọn]

Nếu bạn chỉ cần một phần của tệp trước ký tự, hãy đặt đối số

with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here
3 thành
with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here
4 để chỉ chia chuỗi một lần.

Copied!

with open['example.txt', 'r', encoding='utf-8'] as file: contents = file.read[] character = '!' result = contents.split[character, 1] print[result] # 👉️ ['bobby\nhadz\n.com\n', '\none\ntwo\nthree'] # bobby # hadz # .com print[result[0]]

Điều này sẽ hiệu suất hơn một chút nếu ký tự được chứa nhiều lần trong tệp vì chuỗi chỉ được chia trong lần xuất hiện đầu tiên của ký tự đã cho.

Ngoài ra, bạn có thể sử dụng vòng lặp

with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here
5.

Đọc một tệp cho đến khi một ký tự cụ thể bằng cách sử dụng vòng lặp trong một thời gian

Để đọc một tệp cho đến khi một ký tự cụ thể:

  1. Mở tệp ở chế độ đọc.
  2. Sử dụng phương thức
    with open['myFileName'] as myFile:
      text = myFile.read[]
    result = text.split[separator]  # use your \-1 [whatever that means] here
    
    6 để đọc ký tự tệp theo ký tự trong vòng lặp
    with open['myFileName'] as myFile:
      text = myFile.read[]
    result = text.split[separator]  # use your \-1 [whatever that means] here
    
    5.
  3. Khi nhân vật dừng được tìm thấy, thoát khỏi vòng lặp.

________số 8

Mẫu mã giả định rằng bạn có một tệp

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
8 nằm trong cùng một thư mục.

Copied!

bobby hadz .com ! one two three

Chúng tôi đã sử dụng vòng lặp

with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here
9 để lặp lại cho đến khi chúng tôi đến cuối tệp.

Phương thức

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
5 lấy đối số
def each_chunk[stream, separator]:
  buffer = ''
  while True:  # until EOF
    chunk = stream.read[CHUNK_SIZE]  # I propose 4096 or so
    if not chunk:  # EOF?
      yield buffer
      break
    buffer += chunk
    while True:  # until no separator is found
      try:
        part, buffer = buffer.split[separator, 1]
      except ValueError:
        break
      else:
        yield part

with open['myFileName'] as myFile:
  for chunk in each_chunk[myFile, separator='\\-1\n']:
    print[chunk]  # not holding in memory, but printing chunk by chunk
1 đại diện cho số lượng ký tự để đọc từ tệp.

Nếu bạn đang đọc một tệp ở chế độ nhị phân, thì

def each_chunk[stream, separator]:
  buffer = ''
  while True:  # until EOF
    chunk = stream.read[CHUNK_SIZE]  # I propose 4096 or so
    if not chunk:  # EOF?
      yield buffer
      break
    buffer += chunk
    while True:  # until no separator is found
      try:
        part, buffer = buffer.split[separator, 1]
      except ValueError:
        break
      else:
        yield part

with open['myFileName'] as myFile:
  for chunk in each_chunk[myFile, separator='\\-1\n']:
    print[chunk]  # not holding in memory, but printing chunk by chunk
1 thể hiện kích thước của byte được đọc từ tệp.

Chúng tôi đặt đối số

def each_chunk[stream, separator]:
  buffer = ''
  while True:  # until EOF
    chunk = stream.read[CHUNK_SIZE]  # I propose 4096 or so
    if not chunk:  # EOF?
      yield buffer
      break
    buffer += chunk
    while True:  # until no separator is found
      try:
        part, buffer = buffer.split[separator, 1]
      except ValueError:
        break
      else:
        yield part

with open['myFileName'] as myFile:
  for chunk in each_chunk[myFile, separator='\\-1\n']:
    print[chunk]  # not holding in memory, but printing chunk by chunk
1 thành
with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here
4 để đọc ký tự tệp theo ký tự.

Nếu kết thúc của tệp đã đạt được, phương thức

1.Hai
2.Bye\-1
3.Hello
4.OAPd\-1
5 sẽ trả về một chuỗi trống.

Trên mỗi lần lặp, chúng tôi kiểm tra xem ký tự hiện tại có bằng ký tự dừng không.

Nếu điều kiện được đáp ứng, chúng tôi thoát khỏi vòng lặp, nếu không, chúng tôi sẽ thêm ký tự vào chuỗi

def each_chunk[stream, separator]:
  buffer = ''
  while True:  # until EOF
    chunk = stream.read[CHUNK_SIZE]  # I propose 4096 or so
    if not chunk:  # EOF?
      yield buffer
      break
    buffer += chunk
    while True:  # until no separator is found
      try:
        part, buffer = buffer.split[separator, 1]
      except ValueError:
        break
      else:
        yield part

with open['myFileName'] as myFile:
  for chunk in each_chunk[myFile, separator='\\-1\n']:
    print[chunk]  # not holding in memory, but printing chunk by chunk
6.

Tuyên bố phá vỡ thoát ra khỏi vòng lặp

def each_chunk[stream, separator]:
  buffer = ''
  while True:  # until EOF
    chunk = stream.read[CHUNK_SIZE]  # I propose 4096 or so
    if not chunk:  # EOF?
      yield buffer
      break
    buffer += chunk
    while True:  # until no separator is found
      try:
        part, buffer = buffer.split[separator, 1]
      except ValueError:
        break
      else:
        yield part

with open['myFileName'] as myFile:
  for chunk in each_chunk[myFile, separator='\\-1\n']:
    print[chunk]  # not holding in memory, but printing chunk by chunk
7 hoặc
with open['myFileName'] as myFile:
  text = myFile.read[]
result = text.split[separator]  # use your \-1 [whatever that means] here
5.

Làm thế nào để bạn đọc một tệp cho đến khi một ký tự cụ thể trong Python?

Để đọc một tệp cho đến khi một ký tự cụ thể:..
Mở tệp ở chế độ đọc ..
Sử dụng tệp. đọc [] phương thức để đọc nội dung của tệp thành một chuỗi ..
Sử dụng str. phương thức chia [] để phân chia tệp trên ký tự đã cho ..
Truy cập danh sách tại INDEX 0 ..

Làm thế nào để bạn đọc cho đến khi kết thúc một tập tin trong Python?

Phương thức Readlines [] là phương thức phổ biến nhất để đọc tất cả các dòng của tệp cùng một lúc.Phương thức này đọc tệp cho đến khi EOF [cuối tệp], có nghĩa là nó đọc từ dòng đầu tiên cho đến dòng cuối cùng.Khi bạn áp dụng phương thức này trên một tệp để đọc các dòng của nó, nó sẽ trả về một danh sách.readlines [] method is the most popular method for reading all the lines of the file at once. This method reads the file until EOF [End of file], which means it reads from the first line until the last line. When you apply this method on a file to read its lines, it returns a list.

Làm cách nào để đọc một dòng tệp 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.

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

Phương thức readline [] giúp chỉ đọc một dòng tại một thời điểm và nó trả về dòng đầu tiên từ tệp được đưa ra.Chúng tôi sẽ sử dụng readline [] để đọc tất cả các dòng từ tệp đã cho.Để đọc tất cả các dòng từ một tệp đã cho, bạn có thể sử dụng hàm python readlines [].readline[] method helps to read just one line at a time, and it returns the first line from the file given. We will make use of readline[] to read all the lines from the file given. To read all the lines from a given file, you can make use of Python readlines[] function.

Bài Viết Liên Quan

Chủ Đề