使用Python从.txt文件检索数据?

2024-09-30 03:25:16 发布

您现在位置:Python中文网/ 问答频道 /正文

在下面,您可以看到来自星历.txt文件。现在我想检索几个列(例如,以00:00、27.69和44.1开头的列)并将数组命名为x、y、z。我该怎么办?在

我试过了

x, y, z = numpy.loadtxt("ephemeris.txt", unpack=True)

这个得到这个错误

^{pr2}$

你能帮我把HR:MN转换成分钟吗?在

Date__(UT)__HR:MN     R.A.__(a-apparent)__DEC\
**********************************************\
 2013-Jan-01 00:00 *   14 31 27.69 -12 29 44.1\
 2013-Jan-01 00:01 *   14 31 27.71 -12 29 44.1\
 2013-Jan-01 00:02 *   14 31 27.72 -12 29 44.2\
 2013-Jan-01 00:03 *   14 31 27.73 -12 29 44.2\
 2013-Jan-01 00:04 *   14 31 27.75 -12 29 44.3\
 2013-Jan-01 00:05 *   14 31 27.76 -12 29 44.3\
 2013-Jan-01 00:06 *   14 31 27.77 -12 29 44.4\
 2013-Jan-01 00:07 *   14 31 27.78 -12 29 44.4\
 2013-Jan-01 00:08 *   14 31 27.80 -12 29 44.4\
 2013-Jan-01 00:09 *   14 31 27.81 -12 29 44.5\

提前谢谢


Tags: 文件numpytxttruedate错误hr数组
3条回答

也可以拆分每行,设置字符分隔符。然后可以使用索引访问每个(字符串)令牌:

def prova():
    f = open('/home/frenk/Desktop/ephemeris.txt')
    l = []
    for line in f:
        l = line.split(" ")
        print "date: " + l[1]

其次,如果要将“31”等字符串转换为整数31,只需编写:

^{pr2}$

请注意,您可以使用切片表示法选择字符串片段:

string = "This is a slice of string"
print string[10:15]
import re
f = open("ephemeris.txt")
for line in f.readlines():
    r = re.search("(\d{4})\-(\w{3})-(\d{2}) (\d{2}):(\d{2}) \*   (.*?)\\\n", line)
    if r:
        print "Year: "+r.group(1)
        print "Month: "+r.group(2)
        print "Day: "+r.group(3)
        print "Hour: "+r.group(4)
        print "Minute: "+r.group(5)
        print "Data: "+r.group(6)

这将读取文件的每一行,检查它是否与模式匹配,如果匹配,则打印它可以检索的所有数据。在

您可以使用loadtxt函数的更多参数。在

您得到的错误很可能是由于前两个标题行造成的,所以请使用skiprows=2参数跳过它们

另外,每一行包含不同格式的数据,用空格隔开。使用delimiter=' '以防万一,您可以在dtype=string和{}之间进行选择。在

a = numpy.loadtxt("ephemeris.txt", delimiter=' ', dtype=string, skiprows=2)

这应该给你一个单一的数组,你可以从中执行多种“转换”:每列拆分一个数组,创建一个行列表,等等

^{pr2}$

或者是一些类似的东西。。。在

希望这有帮助,如果需要,请在评论中详细说明。在

相关问题 更多 >

    热门问题