Đọc số từ một tệp trong Python

Chương trình lấy tên của một tệp từ người dùng và in tất cả các số có trong tệp văn bản

Giải pháp vấn đề

1. Lấy tên tệp từ người dùng
2. Đọc từng dòng từ tệp và chia dòng để tạo thành một danh sách các từ
3. Sử dụng vòng lặp for để duyệt qua các từ trong danh sách và một vòng lặp for khác để duyệt qua các chữ cái trong từ
3. Kiểm tra xem chữ cái do người dùng cung cấp có phải là một chữ số không và nếu có, hãy in nó
4. Lối ra

Chương trình/Mã nguồn

Đây là mã nguồn của Chương trình Python để in tất cả các số có trong tệp văn bản. Đầu ra chương trình cũng được hiển thị bên dưới

Chương trình ví dụ dưới đây trình bày những kiến ​​thức cơ bản về cách làm việc với dữ liệu đến từ tệp văn bản. Chương trình được thiết kế để hoạt động với một tệp văn bản chứa danh sách các bài đọc nhiệt độ. Các bài đọc được liệt kê một trên mỗi dòng trong tệp văn bản. Chương trình sẽ đọc danh sách các giá trị đọc từ tệp văn bản, đặt các giá trị đọc vào một danh sách, sau đó xác định và in các giá trị nhiệt độ thấp nhất và cao nhất được tìm thấy trong tệp

temps = []
f = open('temps.txt')
for line in f.readlines():
    temps.append(float(line))
f.close()

lowest = temps[0]
highest = temps[0]

for t in temps:
    if t < lowest:
        lowest = t
    if t > highest:
        highest = t

print('Lowest temp = '+str(lowest))
print('Highest temp = '+str(highest))

Sau đây là một số điều cần lưu ý trong chương trình

  1. Bước đầu tiên khi làm việc với tệp là mở tệp. Hàm
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    1 mở một tệp để đọc và trả về một đối tượng tệp. Tham số để
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    1 chỉ định tên của tệp sẽ mở
  2. f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    3 trả về một danh sách các dòng có thể lặp lại trong tệp văn bản. Chúng tôi thiết lập một vòng lặp for để lặp qua danh sách các dòng này
  3. Mỗi dòng trong tệp văn bản là một chuỗi. Chúng ta phải chuyển đổi chuỗi đó thành float trước khi thêm nó vào danh sách tạm thời
  4. Khi chúng tôi đọc xong dữ liệu từ tệp, chúng tôi sử dụng phương pháp
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    4 để đóng tệp

Vì chúng tôi luôn phải cẩn thận để đóng tệp sau khi làm việc xong với tệp, nên có thể hữu ích khi sử dụng một cấu trúc thay thế để quản lý việc mở và đóng tệp. Cấu trúc Python

f = open('temps.txt')
for line in f.readlines():
    temps.append(float(line))
f.close()
5 hữu ích cho mục đích này

thay cho

f = open('temps.txt')
for line in f.readlines():
    temps.append(float(line))
f.close()

chúng tôi có thể làm

with open('temps.txt') as f:
    for line in f.readlines():
        temps.append(float(line))

Khi chúng tôi thoát khỏi phần thân của cấu trúc with, tệp sẽ tự động được đóng cho chúng tôi. Ngoài ra, nếu chương trình phát sinh lỗi ở bất kỳ đâu trong phần thân chương trình sẽ tự động thoát khỏi phần thân của with và đóng file lại cho chúng ta

Viết vào một tập tin

Ví dụ tiếp theo là một chương trình ngắn mà tôi đã sử dụng để tạo một số dữ liệu ngẫu nhiên cho nhân viên tạm thời. tệp dữ liệu txt

________số 8_______

Dưới đây là một số điều cần lưu ý trong chương trình này

  1. Chúng tôi sẽ sử dụng mô-đun ngẫu nhiên để tạo danh sách các lần đọc nhiệt độ ngẫu nhiên
  2. Như trong ví dụ trước, chúng ta sử dụng hàm
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    1 để mở một tệp. Tham số thứ hai tùy chọn cho hàm
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    1 là một công cụ xác định chế độ tệp. Vì chúng tôi đang mở tệp này để viết nên chúng tôi sử dụng trình xác định chế độ 'w'
  3. Để ghi văn bản vào tệp ta dùng phương thức
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    8. Tham số chúng tôi chuyển đến
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    8 là một chuỗi văn bản mà chúng tôi muốn ghi vào tệp. Chúng ta phải cẩn thận để đảm bảo rằng chuỗi kết thúc bằng ký tự xuống dòng,
    with open('temps.txt') as f:
        for line in f.readlines():
            temps.append(float(line))
    
    0, để văn bản được ngắt dòng ở cuối
  4. Chúng tôi sử dụng hàm
    with open('temps.txt') as f:
        for line in f.readlines():
            temps.append(float(line))
    
    1 từ mô-đun ngẫu nhiên để tạo số float ngẫu nhiên trong phạm vi từ 0. 0 đến 1. 0. Chúng tôi nhân số ngẫu nhiên này với 100 để mở rộng phạm vi từ 0. 0 đến 100. 0
  5. Như trong ví dụ trước, chúng ta sử dụng phương thức
    f = open('temps.txt')
    for line in f.readlines():
        temps.append(float(line))
    f.close()
    
    4 để đóng tệp khi ghi xong vào tệp

Chức năng đọc dữ liệu chung

Trong một vài ví dụ tiếp theo, chúng ta sẽ đọc dữ liệu từ tệp văn bản. Trong mọi trường hợp, dữ liệu sẽ được sắp xếp thành một chuỗi dữ liệu với danh sách các mục dữ liệu trên mỗi dòng của tệp. Hàm Python sau đây sẽ đóng vai trò là chức năng đọc dữ liệu chung để tải dữ liệu thô từ tệp văn bản. Hàm đọc các dòng riêng lẻ của tệp đầu vào dưới dạng chuỗi văn bản, sau đó sử dụng phương thức chuỗi

with open('temps.txt') as f:
    for line in f.readlines():
        temps.append(float(line))
3 để tách từng dòng thành một danh sách các chuỗi cho các mục dữ liệu riêng lẻ

def readData(fileName):
  """Generic data reading function:
     reads lines in a text file and
     splits them into lists."""
    data = []
    with open(fileName) as f:
        for line in f.readlines():
            data.append(lineToData(line.split()))
    return data

Bước tiếp theo thường là chuyển đổi các chuỗi trong danh sách dữ liệu của chúng tôi thành định dạng dữ liệu phù hợp với ứng dụng cụ thể của chúng tôi. Ví dụ, trong chương trình ví dụ tiếp theo bên dưới, chúng ta sẽ sao chép ví dụ hồi quy tuyến tính mà tôi đã trình bày một vài bài giảng trước đây. Chúng tôi sẽ làm việc với một tệp đầu vào trông như thế này

1935  32.1
1940  30.5
1945  24.4
1950  23
1955  19.1
1960  15.6
1965  12.4
1970  9.7
1975  8.9
1980  7.2

Mục nhập đầu tiên trong danh sách dữ liệu được trả về bởi lệnh gọi tới

with open('temps.txt') as f:
    for line in f.readlines():
        temps.append(float(line))
3 trong readData sẽ giống như

["1935","32.1"]

Tôi muốn chuyển đổi cặp chuỗi đó thành một bộ chứa tổ hợp số nguyên và số float. Đây là một chức năng làm sạch dữ liệu đơn giản có thể thực hiện chuyển đổi đó

def lineToData(line)
  """Converts a raw line list into an appropriate data format."""
    return (int(line[0]),float(line[1]))

Sau đó,

with open('temps.txt') as f:
    for line in f.readlines():
        temps.append(float(line))
5 sẽ sử dụng hàm
with open('temps.txt') as f:
    for line in f.readlines():
        temps.append(float(line))
6 này để đưa dữ liệu vào định dạng mà chúng tôi cần

pairs = readData('farm.txt')

Chương trình hồi quy tuyến tính

Bây giờ đây là chương trình đọc dữ liệu dân số trang trại và thực hiện phân tích hồi quy trên dữ liệu. Lưu ý các định nghĩa hàm giúp chúng ta thực hiện các phần chính của tính toán hồi quy

def lineToData(line):
    """Converts a raw line list into an
       appropriate data format."""
    return (int(line[0]), float(line[1]))

def readData(fileName):
    """Generic data reading function:
       reads lines in a text file and
       splits them into lists."""
    data = []
    with open(fileName) as f:
        for line in f.readlines():
            data.append(lineToData(line.split()))
    return data

def means(pairs):
    xSum = 0
    ySum = 0
    for x, y in pairs:
        xSum += x
        ySum += y
    N = len(pairs)
    return xSum / N, ySum / N


def covariance(pairs, means):
    sum = 0
    for x, y in pairs:
        sum += (x - means[0]) * (y - means[1])
    return sum


def xVariance(pairs, xMean):
    sum = 0
    for x, y in pairs:
        sum += (x - xMean) * (x - xMean)
    return sum


def regressionCoeffs(pairs):
    """Computes linear regression coefficients (a,b)
       from a list of (x,y) pairs."""
    m = means(pairs)
    beta = covariance(pairs, m) / xVariance(pairs, m[0])
    alpha = m[1] - beta * m[0]
    return (alpha, beta)


pairs = readData('farm.txt')
a, b = regressionCoeffs(pairs)
for x, y in pairs:
    prediction = a + x * b
    print('Year: {:d} Prediction: {:5.2f} Actual: {:5.2f}'.format(x, prediction, y))

Đầu ra được sản xuất bởi chương trình này là

f = open('temps.txt')
for line in f.readlines():
    temps.append(float(line))
f.close()
0

Điều này có vẻ phù hợp với hồi quy tuyến tính

bài tập lập trình

Viết chương trình Python đọc hai danh sách số nguyên từ tệp có tên 'một. txt' và 'hai. txt' và sau đó xác định số nào từ tệp đầu tiên không xuất hiện trong tệp thứ hai. Tạo danh sách các số này và sau đó viết danh sách ra tệp thứ ba có tên 'diff. txt'

Để gửi tác phẩm của bạn để chấm điểm, hãy nén toàn bộ thư mục dự án của bạn vào một kho lưu trữ ZIP và gửi cho tôi kho lưu trữ đó dưới dạng tệp đính kèm trong một email