如何爬取UIUC翼型数据库数据存入Excel并自动提取有效数值
UIUC翼型dat文件有效数值自动读取方案
放弃固定skiprows的硬编码逻辑,通过逐行内容校验自动筛选有效数据,无需针对单个文件调整跳过行数,可适配库内所有格式不统一的坐标文件:
- 获取目标文件的原始文本内容,按行拆分遍历
- 逐行做有效性判断:
- 清除每行首尾的空白、换行符,空行直接跳过
- 尝试将当前行按空白分割为2个元素,分别转换为浮点数
- 转换成功的即为翼型x/y坐标有效数据,转换失败的属于标题、注释、说明类无效行,直接丢弃
- 将筛选得到的所有有效数值行转为结构化表格,即可写入Excel
可直接复用的实现代码:
import pandas as pd import requests from io import StringIO def load_airfoil_coords(target_url): resp = requests.get(target_url) resp.raise_for_status() valid_data_lines = [] for raw_line in resp.text.splitlines(): cleaned_line = raw_line.strip() if not cleaned_line: continue try: # 有效数据固定为两列浮点数:x坐标、y坐标 x, y = map(float, cleaned_line.split()) valid_data_lines.append(f"{x} {y}") except (ValueError, IndexError): # 非数值行、列数不符合的行全部跳过 continue # 转为结构化DataFrame coord_df = pd.read_csv( StringIO("\n".join(valid_data_lines)), sep=r"\s+", names=["x坐标", "y坐标"] ) return coord_df # 调用示例:获取数据后直接导出Excel即可 # coord_df = load_airfoil_coords(目标文件地址) # coord_df.to_excel("翼型坐标数据.xlsx", index=False)
该方案不受文件头部注释行数、空行数量干扰,覆盖UIUC翼型库所有dat文件的格式场景,不需要针对单个文件做适配调整。
内容的提问来源于stack exchange,提问作者John Chae
相关产品推荐
相关产品推荐

