交通冲突预测Python代码Unicode转义错误排查与解决求助
问题排查与解决
核心错误原因
你遇到的SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes...错误,是因为Python将路径字符串中的\U识别为Unicode转义序列起始,但后续字符不完整导致解码失败。同时代码还存在路径拼接语法错误、缺失依赖导入的问题。
具体修复步骤
1. 修复路径转义问题
Windows路径中的反斜杠\在Python字符串中是转义字符,可通过三种方式解决:
- 给字符串加
r前缀,使用原始字符串,让Python不解析转义字符 - 将反斜杠替换为正斜杠
/ - 用双反斜杠
\\做转义处理
2. 修正路径拼接错误
代码中filename=r'C:\Users\Tawkir\Desktop\Lab Work +file'是错误写法,原始字符串无法直接拼接变量,需改用f-string或标准字符串拼接语法。
3. 补充缺失的依赖导入
代码使用了pd.read_csv但未导入pandas库,必须添加import pandas as pd。
修复后的完整代码
import os import math import pandas as pd # 补充缺失的pandas导入 # 修复路径:使用原始字符串 fileset = os.listdir(r'C:\Users\Tawkir\Desktop\Lab Work') for file in fileset: num = file.split('.')[0].split('-')[0] # 用f-string拼接路径,同时用原始字符串前缀处理转义 filename = fr'C:\Users\Tawkir\Desktop\Lab Work\{file}' data = pd.read_csv(filename) data = data.loc[data['lane_id'] < 10] a = (data.groupby(['track_id'])['lane_id'].max() - data.groupby(['track_id'])['lane_id'].min()).reset_index().rename(columns={'lane_id': 'delta'}) b = data.groupby(['track_id'])['lane_id'].max().astype(int).reset_index().rename(columns={'lane_id': 'new'}) c = data.groupby(['track_id']).lane_id.nth(0).reset_index().rename(columns={'lane_id': 'first'}) d = data.groupby(['track_id']).lane_id.nth(-1).reset_index().rename(columns={'lane_id': 'last'}) data = pd.merge(data, a) del(a) data = pd.merge(data, b) del(b) data = pd.merge(data, c) del(c) data = pd.merge(data, d) del(d) data.loc[(data['delta'] == 0.5) & (data['first'] != data['first'].astype(int)) & (data['last'] != data['last'].astype(int)), 'lane_id'] = data.loc[(data['delta'] == 0.5) & (data['first'] != data['first'].astype(int)) & (data['last'] != data['last'].astype(int)), 'new'] data = data.iloc[:, 0:13] data['speed'] = data['speed'] / 3.6 excel_file = f'./data_geo/{num}_geo.xlsx' # 改用f-string更简洁 map_data = pd.read_excel(excel_file) a2 = -0.1301 ttc_data = ttc(data, map_data, a2) ttc_data = ttc_data.sort_values(by=['track_id1', 'track_id2', 'ttc']) ttc_data.to_csv("ttc_data3.csv", index=False) ttc_data.drop_duplicates(subset=['track_id1', 'track_id2'], inplace=True) ttc_data.to_csv("ttc_data2.csv", index=False) ttc_data = ttc_data.loc[ttc_data['ttc'] <= 20] ttc_data.to_csv("ttc_data.csv", index=False) del(ttc_data) del(data)
额外注意事项
- 确保
ttc函数已正确定义或导入,否则会触发NameError - 检查
./data_geo/目录是否存在,避免读取Excel文件时出现找不到文件的错误
内容的提问来源于stack exchange,提问作者Tawkir Ahmed
相关产品推荐
相关产品推荐

