首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从Python文本文件中检索一个数字

从Python文本文件中检索一个数字
EN

Stack Overflow用户
提问于 2022-06-14 07:55:19
回答 3查看 50关注 0票数 1

我是Python新手。

我有一个程序,将温湿度值保存到文本文件中。我不知道如何检索任何保存的值(然后我将使用这些值与当前的温湿度读数进行比较)。

数据以这种格式保存。

代码语言:javascript
复制
22:48
23:49
24:52

我想检索第一行,并将它们转换为两个变量(温度和湿度)。这是我所得到的,但它只是返回值2。我会非常感谢任何建议。

代码语言:javascript
复制
mylines = []                              
with open ('log.txt','r') as myfile: 
     for myline in myfile:                
         mylines.append(myline)           
 
 mylines[0].split(':')
 
print(mylines[0][1])
EN

回答 3

Stack Overflow用户

发布于 2022-06-14 07:57:33

您需要分配split的结果,因为它不会发生变异。您可以对整个数组执行如下操作:

代码语言:javascript
复制
with open ("log.txt", "r") as myfile:
    for myline in myfile:
        mylines.append(myline.split(":"))

print(mylines[0][1]) # This should now print '48'

或者对于你的具体例子:

代码语言:javascript
复制
mylines[0] = mylines[0].split(":")

进一步制作temphumidity数组也相当简单:

代码语言:javascript
复制
temp = []
humidity = []
with open ("log.txt", "r") as myfile:
    for myline in myfile:
        t, h = list(map(int, myline.split(":")))
        temp.append(t)
        humidity.append(h)
票数 3
EN

Stack Overflow用户

发布于 2022-06-14 08:02:53

如果您只想要文件中第一行的值,并且想必希望它们是整数,那么:

代码语言:javascript
复制
with open('log.txt') as th:
    temp, humidity = map(int, next(th).split(':'))
    print(temp, humidity)

输出:

代码语言:javascript
复制
22 48
票数 0
EN

Stack Overflow用户

发布于 2022-06-14 08:21:45

如前所述,杰克的解决方案会很好。也许值得利用一些库,让自己熟悉字典--它们很棒,然后再去探索数据仓库。

代码语言:javascript
复制
import csv

text_file = r"C:\Path\To\Text\File.txt"

header = ["temp", "humidity"]
with open(text_file, mode="r") as f:  # mode="r" for readonly
    reader = csv.reader(f, delimiter=":")  # Telling the csv module we want to use ":" as our delimiter  
    dict_from_file = [dict(zip(header, list(row))) for row in reader]

因此,我们已经在一个单独的列表中声明了标题。如果需要的话,您可以从文本文件的第一行抓取,但是当然需要修改上面的内容。

然后dict(zip())将文件中每一行的列表“头”和列表“行”组合起来。zip()名义上输出元组对,然后我们使用dict()将其转换为字典对。

这将为您提供以下(列表)输出:

代码语言:javascript
复制
[
{'temp': '22', 'humidity': '48'},
{'temp': '23', 'humidity': '49'},
{'temp': '24', 'humidity': '52'},
]

希望对你有帮助。

编辑:实际上有一种使用csv库的更整洁的方法--重用上面声明的text_file和报头.

代码语言:javascript
复制
dict_from_file = []
with open(text_file, mode="r") as f:
    reader = csv.DictReader(f, header, delimiter=":")
    for row in reader:
        dict_from_file.append(row)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72613345

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档