啊!我是 Python 新手。试图在这里获得模式,但可以使用一些帮助来解除阻塞。
设想:
testZip.zip
test.rpt
里面有文件的文件- .rpt 文件有多个要解析的感兴趣区域(“AOI”)
- AOI1:以
$$
- AOI2:以单行开头的多行
$
目标:
- 将 AOI 转换为表格格式以上传到 SQL
示例文件:
$$ADD ID=TEST BATCHID='YEP' PASSWORD=NOPE
###########################################################################################
$KEY= 9/21/2020 3:53:55 PM/2002/B0/295.30/305.30/4FAOA973_3.0_v2.19.2.0_20150203_1/20201002110149
$TIMESTAMP= 20201002110149
$MORECOLUMNS= more columns
$YETMORE = yay
到目前为止尝试过:
import zipfile
def get_aoi1(zip):
z = zipfile.ZipFile(zip)
for f in z.namelist():
with z.open(f, 'r') as rptf:
for l in rptf.readlines():
if l.find(b"$$") != -1:
return l
def get_aoi2(zip):
z = zipfile.ZipFile(zip)
for f in z.namelist():
with z.open(f, 'r') as rptf:
for l in rptf.readlines():
if l.find(b"$") != -1:
return l
aoi1 = get_aoi1('testZip.zip')
aoi2 = get_aoi2('testZip.zip')
print(aoi1)
print(aoi2)
结果:
- 我对这两个函数都得到了相同的结果
b"$$ADD ID=TEST BATCHID='YEP' PASSWORD=NOPE\r\n"
b"$$ADD ID=TEST BATCHID='YEP' PASSWORD=NOPE\r\n"
如何以文本而不是字节 ( b
) 形式获取结果并删除\r\n
from AOI1
?
- 似乎没有
r
选择z.open()
- 我一直不成功
.strip()
编辑1:
- 感谢@furas 的鼓励!
return l.strip().decode()
为删除新行而工作b
如何从(表格格式AOI2
的单行)获得正确的结果?$
编辑2:
- @furas 2021!
- 将以下逻辑添加到
aoi2
函数中效果很好。
col_array = []
for l in rptf.readlines():
if not l.startswith(b"$$") and l.startswith(b"$"):
col_array.append(l)
return col_array