Hướng dẫn python read data separated by space - python đọc dữ liệu được phân tách bằng dấu cách

1

Mới! Lưu câu hỏi hoặc câu trả lời và sắp xếp nội dung yêu thích của bạn. Tìm hiểu thêm.
Learn more.

Tôi có một số dữ liệu được phân tách bằng khoảng trắng mà tôi muốn trích xuất các cột nhất định. Trong quá khứ tôi đã luôn sử dụng một cái gì đó như sau đây trong Python, trong đó tôi đã loại bỏ những người không cần thiết:

for line in open[f,'r']:
    l = line.split[]
    print " ".join[l[1:3]]

Tôi đang tự hỏi liệu đây có phải là cách nhanh nhất để làm điều này hay không. Nếu tôi so sánh với một gói phần mềm khác [được viết bằng C] đọc cùng một dữ liệu, mã của tôi sẽ chậm hơn đáng kể. Điều này chỉ đơn giản là vì I/O trong C nhanh hơn hay tôi đang viết mã dưới mức tối ưu?

hỏi ngày 18 tháng 3 năm 2015 lúc 19:46Mar 18, 2015 at 19:46

8

Khi bạn trực tiếp lặp lại trên

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
0, tệp được đọc từng dòng. Điều này giúp cho các tập tin lớn nhưng tại hình phạt của IO, mặc dù nếu nó thực hiện đọc bộ đệm trước. Afaik, bên trong nó sử dụng
expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
1 và
expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
2 khi lặp.

Nếu bạn làm

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
3, nó sẽ đọc toàn bộ nội dung một lần nhưng với chi phí bộ nhớ. Trong trường hợp của bạn, bạn có thể thực hiện
expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
4 hoặc
expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
5 [ưu tiên] và nó sẽ nhanh hơn so với lặp lại trực tiếp trong tệp.

Ngoài các điều trên, vui lòng sử dụng các trình quản lý ngữ cảnh khi xử lý các tệp, vì vậy chúng được đóng một lần sau khi thực hiện.

Tài liệu

Đã trả lời ngày 18 tháng 3 năm 2015 lúc 20:19Mar 18, 2015 at 20:19

Saikiran Yerramsaikiran YerramSaikiran Yerram

2.8642 Huy hiệu vàng16 Huy hiệu bạc20 Huy hiệu Đồng2 gold badges16 silver badges20 bronze badges

3

Bạn có thể nhận các cột dự kiến ​​trong danh sách bằng cách sử dụng danh sách toàn diện.

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]

Nếu bạn muốn in các cột bên trong LC, bạn có thể làm điều này :]

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]

Đã trả lời ngày 18 tháng 3 năm 2015 lúc 20:13Mar 18, 2015 at 20:13

2

Bạn có thể muốn xem mô -đun CSV. CSV.Reader được triển khai trong C và phải nhanh hơn so với sử dụng Python thuần túy.

import csv
with open[f, 'rb'] as file:
    r = csv.reader[file, delimiter=' ']
    for line in r:
        print ' '.join[line[1:3]]

Đã trả lời ngày 18 tháng 3 năm 2015 lúc 20:40Mar 18, 2015 at 20:40

3

Làm thế nào để bạn in một chuỗi được phân tách bằng không gian trong Python?

sentence = "This is a test"

words_list = sentence.split[]

print[words_list]

Output:

['This', 'is', 'a', 'test']

Không sử dụng các vòng lặp: * Biểu tượng được sử dụng để in các phần tử danh sách trong một dòng duy nhất có không gian. Để in tất cả các phần tử trong các dòng mới hoặc được phân tách bằng dấu phẩy sử dụng sep =, \ n, hoặc sep =, tương ứng.

Để chuyển đổi chuỗi phân tách không gian thành danh sách trong Python, hãy gọi phương thức

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
6:

Điều này hoạt động vì

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
6 chia chuỗi theo khoảng trống theo mặc định.

  1. Sau đó, hãy xem cách chia một chuỗi các số nguyên thành một danh sách các số nguyên. the string on empty spaces.
  2. Để chuyển đổi một chuỗi số nguyên được phân tách không gian thành danh sách trong Python: each element to an integer.
  3. Chia chuỗi trên các khoảng trống. each integer to a list.

Chuyển đổi từng phần tử thành một số nguyên.

numbers_str = "1 2 3 4 5"

numbers_list = []

for num_str in numbers_str.split[]:
    num_int = int[num_str]
    numbers_list.append[num_int]

print[numbers_list]

Output:

[1, 2, 3, 4, 5]

Thêm mỗi số nguyên vào một danh sách.

numbers_str = "1 2 3 4 5"

numbers_list = [int[num] for num in numbers_str.split[]]

print[numbers_list]

Output:

[1, 2, 3, 4, 5]

Bạn có thể làm điều này với một vòng lặp:

Để làm cho cách biểu thức ngắn hơn, bạn có thể sử dụng khả năng hiểu danh sách:

Sự kết luận

Đọc thêm

Thủ thuật Python

Danh sách Python

Dung dịch

Hãy xem xét tệp được phân phối không gian sau được gọi là

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
8:

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
9

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
0

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
1

Để đọc tệp này bằng

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
2:

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
9

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
4

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
1

Xử lý các tệp bị dị tật với không gian biến

Hãy xem xét tệp được phân phối không gian sau được gọi là

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
8:

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
9

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
8

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
1

Tệp này chứa số lượng không gian và tab khác nhau.

Để phân tích một tệp như vậy, đặt

import csv
with open[f, 'rb'] as file:
    r = csv.reader[file, delimiter=' ']
    for line in r:
        print ' '.join[line[1:3]]
0:

expectedColumns = [" ".join[x] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
9

import csv
with open[f, 'rb'] as file:
    r = csv.reader[file, delimiter=' ']
    for line in r:
        print ' '.join[line[1:3]]
2

from __future__ import print_function
[print[" ".join[x]] for x in [line.split[][0:2] for line in file["testFile",'r'].readlines[]]]
1

Làm thế nào để bạn đọc dữ liệu với không gian trong Python?

Nếu bạn đọc [], nó sẽ đọc toàn bộ nội dung một lần nhưng với chi phí bộ nhớ. Trong trường hợp của bạn, bạn có thể đọc []. Split ['\ n'] hoặc readlines [] [ưu tiên] và nó sẽ nhanh hơn so với lặp lại trực tiếp trong tệp.read[]. split['\n'] or readlines[] [preferred] and it will be faster than iterating over the file directly.

Làm thế nào để bạn đọc một chuỗi có khoảng trống trong Python?

Phương thức Python String ISSPACE [] trả về True True nếu tất cả các ký tự trong chuỗi là ký tự khoảng trắng, nếu không, nó sẽ trả về Sai False.Hàm này được sử dụng để kiểm tra xem đối số có chứa tất cả các ký tự khoảng trắng không, chẳng hạn như: '' - không gian.. This function is used to check if the argument contains all whitespace characters, such as: ' ' – Space.

Làm thế nào để bạn đọc các số được phân tách bằng không gian trong Python?

Để lấy một số lượng thay đổi các đầu vào được phân tách không gian, chúng tôi thường gán chúng vào danh sách nhưng bạn cũng có thể sử dụng tập hợp hoặc tuple theo yêu cầu của bạn.Nếu bạn muốn tập hợp hoặc bộ dữ liệu thì hãy sử dụng tuple [] hoặc set [] thay vì danh sách [].assign them to a list but you could also use set or tuple according to your requirement. If you want sets or tuples then use tuple[] or set[] instead of list[] .

Làm thế nào để bạn in một chuỗi được phân tách bằng không gian trong Python?

Không sử dụng các vòng lặp: * Biểu tượng được sử dụng để in các phần tử danh sách trong một dòng duy nhất có không gian.Để in tất cả các phần tử trong các dòng mới hoặc được phân tách bằng dấu phẩy sử dụng sep =, \ n, hoặc sep =, tương ứng.* symbol is use to print the list elements in a single line with space. To print all elements in new lines or separated by comma use sep=”\n” or sep=”, ” respectively.

Bài Viết Liên Quan

Chủ Đề