<p>这不是解析文件最复杂的方法,但似乎很有效</p>
<pre><code>data = []
text = []
with open('data_file_1.txt') as f:
text = f.readlines()
text = ''.join(text) # Join all lines together, just in case
text = text.strip('\n').strip('\t') # Make whole text one line, just in case
rows = text.split('Frame.') # Separate rows of data
for row in rows[1:]: # First split is empty, start at second
row_data = {}
expected = 0
store = []
for item in row.split(','): # Split data at comma. Note: tuples will be split also
if expected: # If in last item was a start of tuple, add rest values here
expected -= 1
store[1].append(float(item.strip().strip(')')))
if not expected: # when all values are in place, save whole item to row_data
row_data[store[0]] = store[1]
store = []
# In single value cases, parse and save them
elif any(x in item for x in ['id', 'Timestamp', 'Hand_number', 'hand_Id_type', "hand_finger's_number"]):
name, value = item.split(':')
try:
value = int(value)
except ValueError:
value = value.strip()
row_data[name.strip()] = value
# In cases, where there are tuple of 3 floats, parse and store for save
elif any(x in item for x in ['Finger_type(tipposition)', 'Palm', 'direction']):
name, value = item.strip('Finger_type(tipposition) ').split('(')
store = [name.strip().strip(':'), [float(value)]]
expected = 2
data.append(row_data)
for row in data: # Final data in list of dict's
print(row)
# Export your data in format like: .csv, JSON, XML, what is suitable for use in your application
</code></pre>
<p>像这样打印行</p>
<pre><code>{'id': 263126, 'Timestamp': 697287019071, 'Hand_number': 1, 'hand_Id_type': '238right hand', "hand_finger's_number": 2, 'hand direction': [-0.142081, 0.865413, -0.480493], 'Palm position': [35.2841, 284.522, 330.828], 'Palm normal': [-0.686854, -0.435733, -0.581694], 'TYPE_THUMB': [-36.7239, 301.602, 330.845], 'TYPE_INDEX': [-14.9321, 347.039, 280.375], 'TYPE_MIDDLE': [5.5661, 258.191, 321.318], 'TYPE_RING': [20.0886, 251.219, 320.136], 'TYPE_PINKY': [27.5919, 259.584, 310.508]}
</code></pre>