【发布时间】:2017-06-27 13:00:10
【问题描述】:
所以我正在编写一个 Python 程序,它读取串行数据行,并将它们与行代码字典进行比较,以确定正在传输哪些特定行。我正在尝试使用正则表达式来过滤掉多余的垃圾行串行读取字符串,但我遇到了一些问题。
我字典中的每个代码都如下所示:T12F8B0A22**F8。星号是区分每个字符串代码的两个字母数字部分。
这就是我的正则表达式:'/^T12F8B0A22[A-Z0-9]{2}F8$/'
但是,我遇到了一些错误。我的第一个错误是,有些字符是我仍然需要删除的字符串的结尾,这很奇怪,因为我认为$/ 表示正则表达式中的行尾。但是,当我通过调试器运行代码时,我注意到在运行以下代码后:
#regexString contains the serial read line data
regexString = re.sub('/^T12F8B0A22[A-Z0-9]{2}F8$/', '', regexString)
我的字符串看起来像这样:'T12F8B0A2200F8\\r'
我需要摆脱\\r。
如果由于某种原因我不能用正则表达式摆脱这个,你如何在 python 中通过参数发送特定的字符串字符?在这种情况下,我想它会是长度 - 3?
【问题讨论】:
-
只有几个错误?好吧,由于正则表达式分隔符,我怀疑它是否有效。您必须删除
/s。请注意$是一个零宽度断言,您需要在$之后添加[\r\n]*以消耗任何换行符。试试'(?m)^T12F8B0A22[A-Z0-9]{2}F8$[\r\n]*' -
删除
/会使它工作得更糟:\ 编辑:感谢您的帮助,但您的建议并没有解决问题,事实上它消除了很多我的字符串修剪实际工作。 -
r 标签表示 r 语言 -- 建议你删除它。