如何在Python中打开文本文件并创建数组

问题描述

我有一个名为Orbit 1的文本文件,需要我帮助打开它,然后创建三个独立的数组。我是Python的新手,在这方面一直遇到困难。这是我的文本文件的前几行。包含标题的共有1112行。

Year    Month   Day Hour    Minute  Second  Millisecond Longitude   Latitude    Altitude
2019    3   17  5   55  55  0   108.8730074 50.22483151 412.6226898
2019    3   17  5   56  0   0   108.9895097 50.53642185 412.7368197
2019    3   17  5   56  5   0   109.1078294 50.8478274  412.850563
2019    3   17  5   56  10  0   109.2280101 51.15904424 412.9640113
2019    3   17  5   56  15  0   109.3500969 51.47006828 413.0772319
2019    3   17  5   56  20  0   109.4741362 51.78089533 413.1901358
2019    3   17  5   56  25  0   109.6001758 52.09152105 413.3025291
2019    3   17  5   56  30  0   109.728265  52.40194099 413.414457
2019    3   17  5   56  35  0   109.8584548 52.71215052 413.5259984
2019    3   17  5   56  40  0   109.9907976 53.02214489 413.6371791

我希望打开此文本文件以创建三个名为lat [N],long [N]和time [N]的数组,其中N是文件中的行数。我最终希望能够确定任何时候的纬度,经度和时间。例如,lat[0]如果工作正常,应返回50.22483151。另外,对于时间,我需要将其转换为十进制小时,然后创建数组。

基本上,在打开此文本文件并创建三个数组时,我需要帮助。

我已经尝试过使用这种方法打开文件,但是在尝试写入数组时遇到了麻烦,我认为我可能无法正确打开文件。

import numpy as np
 
file_name = 'C:\\Users\\Saman\\OneDrive\\Documents\\Orbit 1.txt'

data = []
with open(file_name) as file:
    next(file)
    for line in file:
        row = line.split()
        row = [float(x) for x in row]
        data.append(row)

解决方法

解决问题最轻松的方法是使用Pandas:

import pandas as pd
df = pd.read_table('Orbit 1.txt',sep=r'\s+')
df['Longitude']
#0    108.873007
#1    108.989510
#2    109.107829
#3    109.228010
#4    109.350097
#5    109.474136
#6    109.600176
#7    109.728265
#8    109.858455
#9    109.990798

一旦获得Pandas DataFrame,您可能也希望将其用于其余数据处理。

,
file_name = 'info.txt'

Lat=[]
Long=[]
Time=[]
left_justified=lambda x: x+" "*(19-len(x))
right_justified=lambda x: " "*(19-len(x))+x

with open(file_name) as file:
    next(file)
    for line in file:
        data=line.split()
        Lat.append(data[8])
        Long.append(data[7])
        hrs=int(data[3])
        minutes=int(data[4])
        secs=int(data[5])
        total_secs=secs+minutes*60+hrs*3600
        Time.append(total_secs/3600)
        
print(left_justified("Time"),left_justified("Lat"),left_justified("Long"))
for i in range(len(Lat)):
    print(left_justified(str(Time[i])),left_justified(Lat[i]),left_justified(Long[i]))

尝试一下

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...