我有一个csv文件,其中第一行内容如下:
Pyscip_V1.11 Ref: #001=XYZ_0[1234] #50=M3_0[112] #51=M3_1[154] #52=M3_2[254]...
字符串
等等。我想做的是创建过滤后的值,这样第一列是Ref
,它接受#符号后面的所有值,如001,50,51,52. M3_3..
header_pattern = r'Pyscip_V(\d+\.\d+) Ref:'
version_match = re.search(header_pattern, first_line.iloc[0, 0])
version_number = version_match.group(1) if version_match else ''
matches = re.findall(r'#(\d+)=(\w+_\d)\[([\d]+)\]', first_line.iloc[0, 0])
parsed_df = []
for match in matches:
row_dict = {
'Ref': match[0] if match[0] else '',
'ID': match[1] if match[1] else '',
'Ser_No': match[2] if match[2] else ''
}
parsed_df.append(row_dict)
new_df = pd.DataFrame(parsed_df)
型
不过,我只得到了一个完整的框架。这里有什么问题吗?
编辑:第三行的数据如下所示:
ID Date XYZ_0 M3_0 M3_1 M3_2
1 22.12.2023 12.6 0.5 1.2 2.3
型
预期的结果是
Ref ID Num
001 XYZ_0 1234
50 M3_0 112
51 M3_1 154
型
2条答案
按热度按时间4zcjmb1e1#
我会打开CSV文件,提取第一行并处理它,只有在用pandas读取CSV的其余部分之后。
对于这一点,你最初的方法和正则表达式是很好的。
字符串
输出量:
型
py49o6xq2#
你可以试试(regex101 link):
字符串
印刷品:
型