我正在尝试读取Python中具有相同结构但非常原始的文件:使用默认的list
和解析工具读取它似乎并不简单,但我确定有可能的。
所以结构是:int
space int
space double
space一个包含空格的长字符串
我需要将两个int
和float
(文件头)分开存储,然后我想将整个字符串作为整体块,因为我的数据是在每个角色中的位级别(我希望我能清楚地解释它......)。
天真地使用.split()
方法对我没有帮助,因为字符串中的空格,我一直在考虑在前三个之后“{1}}中的所有元素”“网格化”,但我如果字符串中有双重空格,则会丢失信息。
在C ++中,我将split()
用于整数和双精度,然后<<
用于字符,在Python中是否有等价物?
答案 0 :(得分:4)
您仍然可以使用.split()函数。由于您知道线条的格式,您可以传递要制作的行数。
str.split(str="", num)
参数
str - 这是任何分隔符,默认情况下是空格
num - 这是要进行的分割数
所以在你的情况下你应该能够做到
str.split(str='', 3)
哪个应该分成:
答案 1 :(得分:1)
所以每行的格式如下(我假设字符串没有单独用引号转义):
"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([\w\s\_\-]+)'
match = re.search(pat, line)
matches_by_group = match.groups() #Do something with this
通过这种方式,您可以在每个行的元组中包含每个单独的部分。然后,您可以根据需要转换double,int等。