如何在Python中从串行文件捕获字符和换行符并打印到文件
我试图在python脚本中捕获串行数据。流以“#”结尾,流可以包含字母、数字、许多其他特殊字符和新行。我想捕获所有角色,并在完成后将其放入文件中。然而,我不确定我的re是否正确。是如何在Python中从串行文件捕获字符和换行符并打印到文件,python,Python,我试图在python脚本中捕获串行数据。流以“#”结尾,流可以包含字母、数字、许多其他特殊字符和新行。我想捕获所有角色,并在完成后将其放入文件中。然而,我不确定我的re是否正确。是 re.match(“[A-Za-z0-9,.$:&*=-]”,char,re.DOTALL) 是否要捕获所有字母、数字和,.$:&*=-字符以及换行符?我可以简单地添加遇到的每个字符,将其放入列表中,然后将列表写入文件,如下所示: while 1: # must handle 'exceptions' - IE
re.match(“[A-Za-z0-9,.$:&*=-]”,char,re.DOTALL)
是否要捕获所有字母、数字和,.$:&*=-
字符以及换行符?我可以简单地添加遇到的每个字符,将其放入列表中,然后将列表写入文件,如下所示:
while 1:
# must handle 'exceptions' - IE blank data....
try:
if s.inWaiting():
val = s.read(s.inWaiting())
for char in val:
if re.match("[A-Za-z0-9,.$:<>&=-]", char, re.DOTALL):
chunk += char
print char
# handle end of stream
#if char is '#':
if re.match("#", char):
f = open('./report', 'w')
f.write(chunk)
sys.exit()
而1:
#必须处理“异常”-即空白数据。。。。
尝试:
如果s.inWaiting():
val=s.read(s.inWaiting())
对于val中的字符:
如果重新匹配(“[A-Za-z0-9,.$:&=-]”,char,re.DOTALL):
chunk+=char
打印字符
#处理流的末尾
#如果char为“#”:
如果重新匹配(“#”,字符):
f=打开(“./报告”,“w”)
f、 写入(块)
sys.exit()
目前它正在抓取我所期望的所有内容,但似乎没有抓取新行,因为生成的文件不包含任何…即使您正在使用
re.DOTALL
,您的正则表达式实际上也没有使用点运算符。将第7行更改为以下内容应该可以正常工作:
if re.match("[A-Za-z0-9,.$:<>&=-]|\n", char):
如果重新匹配(“[A-Za-z0-9,.$:&=-]|\n”,字符):
适用于基于*nix和基于PC的换行编码,因为正则表达式将忽略\r