我正在尝试读取包含以下几行的文件:
<Property authority="Design" name="X">2538.0</Property>
<Property authority="Design" name="Y">-226.084564</Property>
<Property authority="Design" name="Z">393.511932</Property>
<Property authority="Design" name="Diameter2">0.0</Property>
<Property authority="Design" name="AssemblyID">WDLX6B-S11135-Y</Property>
<Property authority="Design" name="AssemblyRev">55</Property>
我需要搜索/匹配“Y”(行号:2)才能提取值。我写了以下几行。
for line in file:
if re.findall("\\bY\\b", line):
y_cor = re.findall('[-\d]+\.\d*',line)
print (line)
print(y_cor)
这样,代码选择第2行以及第5行,其中行中也有Y.输出如下:
<Property authority="Design" name="Y">-226.084564</Property>
['-226.084564']
<Property authority="Design" name="AssemblyID">WDLX6B-S11135-Y</Property>
[]
我只需要行号。 2被挑选。我已经尝试过跟随正则表达式。
if re.findall(r' \\"Y\\" ',line):
但这是错误的语法。谁能建议我如何区分“Y”和Y?可能还有其他方法可以避免挑选第5行。但是我需要为X,Y和amp;制作通用代码。 Z,以便只挑选相应的行。感谢。
答案 0 :(得分:0)
假设您想要以下输出:-226.084564 我可以构建一个简单的正则表达式:
="Y">(-?[0-9-\.]*)
此正则表达式仅匹配name =“Y”。为了使其区分大小写,我可以将其修改为="[Yy]">(-?[0-9-\.]*)
输出(在python中测试):
Match 1
1. -226.084564
答案 1 :(得分:0)
以下正则表达式为我工作。
re.findall('\\"Y\\"',line)
从现在开始,我会用 lxml 解析xml。