gpt4 book ai didi

Python:如何从混合内容的文本文件中提取 float ?

转载 作者:行者123 更新时间:2023-11-28 16:48:28 26 4
gpt4 key购买 nike

我有一个制表符分隔的文本文件,其中包含以下数据:

    ahi1
b/se
ahi
test -2.435953
1.218364
ahi2
b/se
ahi
test -2.001858
1.303935

我想将两个 float 提取到一个包含两列的单独的 csv 文件中,即。

-2.435953 1.218264

-2.001858 1.303935

目前我的破解尝试是:

 import csv
from itertools import islice
results = csv.reader(open('test', 'r'), delimiter="\n")

list(islice(results,3))
print results.next()
print results.next()
list(islice(results,3))
print results.next()
print results.next()

这并不理想。我是 Python 的菜鸟,所以我提前向您道歉,感谢您抽出宝贵的时间。

最佳答案

这是完成这项工作的代码:

import re

# this is the same data just copy/pasted from your question
data = """ ahi1
b/se
ahi
test -2.435953
1.218364
ahi2
b/se
ahi
test -2.001858
1.303935"""

# what we're gonna do, is search through it line-by-line
# and parse out the numbers, using regular expressions

# what this basically does is, look for any number of characters
# that aren't digits or '-' [^-\d] ^ means NOT
# then look for 0 or 1 dashes ('-') followed by one or more decimals
# and a dot and decimals again: [\-]{0,1}\d+\.\d+
# and then the same as first..
pattern = re.compile(r"[^-\d]*([\-]{0,1}\d+\.\d+)[^-\d]*")

results = []
for line in data.split("\n"):
match = pattern.match(line)
if match:
results.append(match.groups()[0])

pairs = []
i = 0
end = len(results)
while i < end - 1:
pairs.append((results[i], results[i+1]))
i += 2

for p in pairs:
print "%s, %s" % (p[0], p[1])

输出:

>>>
-2.435953, 1.218364
-2.001858, 1.303935

您可以将它们保存在列表中,然后将它们压缩在一起,而不是打印出数字。我正在使用 python regular expression framework解析文本。如果您还不知道,我只能建议您学习正则表达式。我发现解析文本和各种机器生成的输出文件非常有用。

编辑:

哦,顺便说一句,如果您担心性能,我在我的慢速旧 2ghz IBM T60 笔记本电脑上进行了测试,我可以使用正则表达式在大约 200 毫秒内解析一个兆字节。

更新:我觉得很亲切,所以我为你做了最后一步:P

关于Python:如何从混合内容的文本文件中提取 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11093606/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com