I'm not Admin nor Webbot, but:
The ! is used as a universal start-of-packet indicator, since the data is printed out as ASCII and the packet length is unknown. The mechanism for its detection is fairly simple--any and all '!' in the string are treated as a new packet. The == operator is useful here.
If you want to reduce processing, you'd be best off changing it to use binary numbers (2-byte signed integers would give you plenty of precision) instead of ASCII, thereby eliminating the need to reconstruct the numbers. You should always have a start of packet marker of some sort--it is highly unlikely that both systems will start out at the exact same time, and packet markers serve as simple ways to synchronize communications. Of course, you could just use newlines as the end of packet marker and write your code to use those instead, since it's basically the same process.
Just outputing roll/pitch/yaw values in CSV format wouldn't save you much of any processing, if that's your concern.