CSV文件:
没有头
8=Fix1.1<SOH>9=70<SOH>35=AE<SOH>10=237 ----This entire message is FIXData value
8=Fix1.1<SOH>9=71<SOH>35=AE<SOH>10=238
8=Fix1.1<SOH>9=72<SOH>35=AE<SOH>10=239
8=Fix1.1<SOH>9=73<SOH>35=AE<SOH>10=240
如何从查询MS DB中获取数据到CSV文件的代码片段。
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER=server;DATABASE=abc;UID=user;PWD=password')
sql = """select FIXData from table WHERE MessageTimestamp BETWEEN '2021-09-20 07:00:00' AND '2021-09-20 07:01:00';"""
rows = cursor.execute(sql)
with open(r'HOME/sqlresults.csv', 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
# writer.writerow([x[0] for x in cursor.description]) --- dont want headers
for row in rows:
writer.writerow(row)
问题:
- 从CSV文件中可以看出,整个FIX消息被压缩到一个单元格中(这里考虑Excel)。
- FIX消息被分隔,基本上我想把标签分隔成单独的单元格。
期望输出值:
- CSV文件格式(理想情况下用';'分隔),以便当我在excel中打开CSV时,标签值将在那里自己的单元格中,而不是压缩在一个。
8=Fix1.1;9=70;35=AE;10=237
8=Fix1.1;9=71;35=AE;10=238
8=Fix1.1;9=72;35=AE;10=239
8=Fix1.1;9=73;35=AE;10=240
期望输出:
- 这是可选的,但如果可以在上述范围内完成将会很有帮助。
- 删除标签 的第一部分
CSV文件
Fix1.1;70;AE;237
Fix1.1;71;AE;238
Fix1.1;72;AE;239
Fix1.1;73;AE;240
注意:
- 请注意我不能使用第三方模块(不使用Pandas数据框架等)
最后,我想我将使用Python replace方法将SOH字符转换为,
,从而得到上述所需的输出。
我设法得到一个解决方案使用线程,如何搜索和替换文件中的文本?
# Read in the file
with open('file.txt', 'r') as file :
filedata = file.read()
# Replace the target string
filedata = filedata.replace('x01', ',') ---- Using RHEL based system so found 'u001' didnt work for me. Dont know the details of why....
# Write the file out again
with open('file.txt', 'w') as file:
file.write(filedata)