计算文本文件

时间:2018-06-06 19:00:12

标签: python-3.x distance filestream

我正在学习Python 3,我有一个问题。

我有一个文本文件' test.txt'它的内容是:

1, 2

3, 4

5, 7

@@@@@@@ 

10, 11

19, 20 

左侧的数字是x坐标,右侧的数字是y坐标。 我希望距离六位数,距离下面的四位数字的距离为@@@@@@@&& 39; 由于距离公式是, 距离= SQRT((y2-y1)^ 2 +(x2-x1)^ 2)

我的问题是我想提取六个数字,并计算三对的总距离。例如, total_distance = SQRT((4-2)^ 2 +(3-1)^ 2)+ SQRT((7-4)^ 2 +(5-3)^ 2)

之后,我想得到(10,11)和(19,20)。令我困惑的是,我怎样才能跳过' @@@@@@@'并将数字提取为x和y坐标。

我开始写这样的代码:

with open("text.txt") as filestream:
    for line in filestream:
        currentline = line.split(",")

我试图弄清楚如何解决这个问题。你能帮我解决一下我应该怎么做的建议吗?

1 个答案:

答案 0 :(得分:0)

尝试使用正则表达式:

import re

with open("text.txt") as f:
    arr = [[int(l.split(',')[0]), int(l.split(',')[1])] for l in f.readlines() if re.match('\d+, \d+', l)]

如果你需要分开的部分:

import re

arr = []
with open("text.txt") as f:
    parts = re.compile('@+').split(f.read())
    for part in parts:
        arr.append([[int(l.split(',')[0]), int(l.split(',')[1])] for l in part.split('\n') if re.match('\d+, \d+', l)])

如果您确定该文件存在且具有该特定格式,那么所有这些都是偏离的。

PS:我无法弄清楚你要对这些数字做什么