我有一个文本文件,里面有几个文本块:
Module Resistor_SMD:R_0402_1005Metric (layer B.Cu) (tedit 5B301BBD) (tstamp 5CC0A687)
(at 120.316179 97.92138 90)
(descr "Resistor SMD 0402 (1005 Metric), square (rectangular) end terminal, IPC_7351 nominal, (Body size source: http://www.tortai-tech.com/upload/download/2011102023233369053.pdf), generated with kicad-footprint-generator")
(tags resistor)
(path /610532D4)
(attr smd)
(fp_text reference R59 (at 0 1.17 90) (layer B.SilkS)
我想提出以下内容:120.316179, 97.92138 90 and R59
把它存放在某个地方......
然后,我想获取那些行项目的集合,并根据前两个数字的值抛出一些......它们是XY坐标。
然后,将其写入列表。
我怎么能用正则表达式做到这一点?我正在加载文件并尝试跟随here,但我在迷你熊猫库中迷路了。
IMO你不需要re
来完成这项任务。您可以遍历文件的行,并根据'(at '
和'fp_text reference'
等信号字符串,填写所有电阻数据的列表,例如:
with open('textfile.txt') as f:
data = []
row = []
for line in f:
if row:
if '(fp_text ref' in line.strip():
row.append(line.strip().split()[2])
data.append(row)
row = []
else:
if '(at ' in line.strip():
row = line.strip()[:-1].split()[1:4]
print(data)
# [['120.316179', '97.92138', '90', 'R59']]
如果你想从这个数据中获得一个pandas数据帧:
import pandas as pd
df = pd.DataFrame(data, columns=['x', 'y', 'z', 'R'])
print(df)
# x y z R
# 0 120.316179 97.92138 90 R59
This RegEx可能会帮助您捕获三个所需的字符串:
([\d]+\.[\d]{5,}|R[0-9]+)
[\d]+\.[\d]{5,}
)检查你想要的浮点数,浮点数的边界是5+,
右边的那个(R[0-9]+
)有一个左侧的R边界。