我有一个来自测试回归失败的 csv 错误消息,我正在将它导入到 Pandas 数据帧中,但我想找到一些与异常有关的子字符串,特别是。
我用 .csv 的内容填充我的数据框,如下所示:
df = pd.read_csv('ErrorMessage3.csv', header=None, sep=',',
names=['ErrorMessage'])
我有以下正则表达式和相应的测试字符串(这是我的错误消息数据框列中的第一个条目),它完全返回我想要的内容:
teststring = "Step 13 - Iteration 1 Failed: Action: <Update Latest CC Exp
Date Record from Epay Account {DBServer;UserName;Password='',
DatabaseName='',Year Offset='-10'}> --->
System.Data.SqlTypes.SqlNullValueException: Data is Null. This method or
property cannotbecalled
on Null values. ---> System.Data.SqlTypes.SqlNullValueException2: Data is Null."
re.findall(r"---> ([^:]+): ", teststring)
这导致以下输出:
['System.Data.SqlTypes.SqlNullValueException',
'System.Data.SqlTypes.SqlNullValueException2']
但我希望能够将其添加为数据框中的“例外”列。我认为这会奏效:
df['Exceptions'] = df['ErrorMessage'].str.extract(r"---> ([^:]+): ")
但是当我运行它时,我添加了“异常”列,但所有行都添加了 NaN。我验证了我的 ErrorMessage 是对象类型,并且我使用了在线正则表达式测试器来验证至少我的 ErrorMessage 条目的子集确实包含与我的正则表达式匹配的异常。我已经阅读了一些看起来非常相似的其他堆栈溢出问题,但我运气不佳。
为什么将正则表达式应用于数据帧会产生 nan,但将其应用于单个字符串会返回我想要的结果?
相关分类