Python 解析平面文件中的数据
我试图从平面文件中读取一些数据,并使用Python将其显示在其他应用程序上。我的平面文件有12000行,我不需要所有的数据。我需要解析出一些数据。我的平面文件上有12000行。一块行中除其他数据外还有00,另一块行中除其他数据外还有10。我要做的是解析出其中包含10的所有行,并且只包括那些包含00的行 下面是更新的示例文件。我想用10来解析所有的行。此外,它只是一个样本,我的实际平面文件是12000行 我刚更新了我的平面文件。在这里,我只想读一行,开头是$,后面是LOB,结尾是00,在&。我想解析平面文件中的所有其他内容Python 解析平面文件中的数据,python,Python,我试图从平面文件中读取一些数据,并使用Python将其显示在其他应用程序上。我的平面文件有12000行,我不需要所有的数据。我需要解析出一些数据。我的平面文件上有12000行。一块行中除其他数据外还有00,另一块行中除其他数据外还有10。我要做的是解析出其中包含10的所有行,并且只包括那些包含00的行 下面是更新的示例文件。我想用10来解析所有的行。此外,它只是一个样本,我的实际平面文件是12000行 我刚更新了我的平面文件。在这里,我只想读一行,开头是$,后面是LOB,结尾是00,在&。我想解
$90TM020516 19002200&
$90LOB 0 0 0 7 10 &
$90LOB 25 0 0 6 10 &
$90LOB 57 0 0 6 10 &
$90LOB353 0 0 5 10 &
$90LOB 36 0 0 5 10 &
$90GPSA8 0 38281168 -77448376&
$90LOB276 0 0 5 10 &
$90LOB185 0 0 6 10 &
$90LOB197 0 0 6 00 &
$90LOB198 0 254 6 00 &
$90LOB197 0 254 6 00 &
RSSI $90LOB201 0 254 5 00 &
$90TM020516 19002300&
$90LOB194 0 254 5 00 &
$90LOB190 0 254 5 00 &
$90LOB185 0 254 5 00 &
$90LOB181 0 254 5 00 &
$90LOB187 0 254 5 00 &
$90LOB192 0 254 5 00 &
$90LOB195 0 254 5 00 &
$90LOB195 0 254 5 00 &
$90LOB191 0 254 5 00 &
$90LOB184 0 254 5 00 &
$90LOB177 0 254 5 00 &
下面是我用来读取数据的代码
for line in lines:
if (line[0] == '$'):
if (line[3:6] == 'LOB'):
if (line[22:24]=='00'):
如果你愿意,我可以把整个平面文件寄给你。这只是文件的摘录 如果我正确理解了您的问题(我不确定我是否理解),您的文件中的行如下所示:
@45 0 0 5 10 *
@45 0 0 5 10 *
@45 0 0 5 10 *
@45 0 0 6 10 *
@45 0 0 6 00 *
@45 0 0 6 00 *
@45 0 0 6 00 *
@45 0 0 5 00 *
。。。你只想读有00的行,忽略有10的行
下面是实现这一点的代码示例:
# List containing all the lines you want to save
lines_you_want = []
# Open the file with 12,000 lines
with open('some.file', 'rb') as infile:
# Check if each line starts with 00
for line in infile:
# Check if the 15th character is a '0' instead of a '1'
if (line[15] == '0'):
lines_you_want.append(line)
# Do something with lines_you_want
这假设00或10在文件中始终处于同一位置(字符15和16),并且这两个是唯一可能存在的内容(即不是01、11、12、29或其他内容),否则您必须更改此设置
根据应用程序的不同,您也可以在运行时使用这些行来代替创建列表。两种方法都有效
如果我有一个错误的假设,请评论,我会编辑我的答案
import re
filename = <path to file>
lines = [line.strip() for line in open(filename) if re.match(r'^\$.*LOB.*00 &$', line)]
这将产生:
$90LOB197 0 0 6 00 &
$90LOB198 0 254 6 00 &
$90LOB197 0 254 6 00 &
$90LOB194 0 254 5 00 &
$90LOB190 0 254 5 00 &
$90LOB185 0 254 5 00 &
$90LOB181 0 254 5 00 &
$90LOB187 0 254 5 00 &
$90LOB192 0 254 5 00 &
$90LOB195 0 254 5 00 &
$90LOB195 0 254 5 00 &
$90LOB191 0 254 5 00 &
$90LOB184 0 254 5 00 &
$90LOB177 0 254 5 00 &
从您的示例数据中。如果您想查看代码,可以在上完成,否则请说明您的问题。我喜欢您的名字作为初学者。因此,请发布一个您试图解析的文件示例,其中包含一个您希望保留的行的示例和一个您希望忽略的行的示例。第二,发布您为此任务编写的代码会很好。唯一的方法是在该行不包含至少16个字符的情况下。这可能吗?亲爱的Byrce,我已经更新了我的帖子,看一看,并相应地更新你的答案。
$90LOB197 0 0 6 00 &
$90LOB198 0 254 6 00 &
$90LOB197 0 254 6 00 &
$90LOB194 0 254 5 00 &
$90LOB190 0 254 5 00 &
$90LOB185 0 254 5 00 &
$90LOB181 0 254 5 00 &
$90LOB187 0 254 5 00 &
$90LOB192 0 254 5 00 &
$90LOB195 0 254 5 00 &
$90LOB195 0 254 5 00 &
$90LOB191 0 254 5 00 &
$90LOB184 0 254 5 00 &
$90LOB177 0 254 5 00 &