在python中读取单行文件,不跳过一些空格



我试图在Python中读取具有相同结构但相当原始的文件:使用默认的list和解析工具读取它似乎并不微不足道,尽管我确信这是可能的。所以结构是:int space int space double space一个包含空格

的长字符串

我需要将两个int s和float(文件头)分开存储,然后我想将整个字符串作为一个整体块,因为我的数据是在每个字符的位级别编码的(我希望我清楚地解释它…)。

由于字符串中的空格,使用天真的.split()方法对我没有帮助,我一直在考虑在前三个之后"网格化"split()中的所有元素,但是如果字符串中有双空格,我会丢失信息。

在c++中,我会使用<<的整型和双精度,然后.getbyte()的字符,在Python中有等效的吗?

您仍然可以使用.split()函数。既然你知道行的格式,你就可以传入要制作的行数。

str.split(str="", num)

参数str——这是任意分隔符,默认为空格。
Num——这是要分割的数目。
所以在你的例子中你应该可以输入

str.split(str='', 3)

应该拆分为:

    int
  • int
  • 字符串

所以每行的格式看起来像这样(我假设字符串没有单独用引号转义):

"4 5 8.7 here is a really long string"

一般来说,对于更复杂的解析,建议使用正则表达式。

import re
[...]
for line in file:
    #let's say line is "4 5 8.7 here is a really long string"
    pat = r'([0-9]+)s([0-9]+)s([0-9.]+)s([ws_-]+)'
    match = re.search(pat, line)
    matches_by_group = match.groups() #Do something with this

这样,您将在元组中为每行拥有每个单独的部分。然后可以根据需要强制转换double类型、int类型等。

相关内容

  • 没有找到相关文章

最新更新