我有一个文件如下所示:
@ junk
...
@ junk
1.0 -100.102487081243
1.1 -100.102497023421
... ...
3.0 -100.102473082342
&
@ junk
...
我只对@
和&
字符之间的两列数字感兴趣。这些字符可能出现在文件中的任何其他位置,但决不会出现在数字块中。你知道吗
我想创建两个列表,一个包含第一列,另一个包含第二列。你知道吗
List1 = [1.0, 1.1,..., 3.0]
List2 = [-100.102487081243, -100.102497023421,..., -100.102473082342]
我一直在使用shell脚本为这些文件准备一个更简单的Python脚本,它可以生成列表,但是,我正在尝试将这些进程迁移到Python上,以获得更一致的应用程序。有什么想法吗?我在Python和文件处理方面的经验有限。你知道吗
编辑:我应该提到,这个数字块出现在文件的两个地方。两个数字块是相同的。你知道吗
Edit2:一个通用函数将是最令人满意的,因为我将把它放入一个自定义库中。你知道吗
当前努力
我目前使用一个shell脚本将除数字块之外的所有内容修剪成两个独立的列。从这里开始,我可以使用以下函数
def ReadLL(infile):
List = open(infile).read().splitlines()
intL = [int(i) for i in List]
return intL
从我的主打电话
import sys
import eLIBc
infile = sys.argv[1]
sList = eLIBc.ReadLL(infile)
问题在于知道如何用Python从原始文件中提取数字块,而不是使用shell脚本。你知道吗
您需要循环文件本身,并为找到第一行而没有
@
字符时设置一个标志,之后就可以开始收集数字了。在一行中找到&
字符时中断阅读。你知道吗因此,上述:
False
,并且仅当找到没有'@'
的行时,才将该行设置为True
。你知道吗True
时:&
,则返回读取的数据通过返回,函数结束,文件自动关闭。只读取第一个块,忽略文件的其余部分。你知道吗
试试这个:
这应该给你第一组数字。你知道吗
输入:
输出:
更新
如果两个块都需要,请使用以下命令:
相关问题 更多 >
编程相关推荐