我正在尝试从平面文件中读取一些数据并使用 Python 将其显示在其他应用程序上。我的平面文件有 12,000 行,我不需要所有数据。我需要解析一些数据。我的平面文件中有 12,000 行。一个 block 的行除了其他数据之外还有 00,另一个 block 除了行中的其他数据之外还有 10。我想要做的是解析出所有包含 10 的行,并仅包含那些包含 00 的行。
下面是更新后的示例文件。我想用 10 解析出所有行。而且它只是一个示例,我的实际平面文件有 12,000 行。
我刚刚更新了我的平面文件。在这里,我只想读取以 $ 开头、$ 之后为 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 或其他字符) ,否则您将不得不更改此设置。
您也可以根据您的应用程序对行进行一些操作,而不是创建列表。两种方法都有效。
如果我做出了错误的假设,请发表评论,我将编辑我的答案。
关于python - 从平面文件中解析出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38441100/