python - 如何在 Python 的文本文件中找到某个字符串的行号?
问题描述
我编写了一个 Python 脚本,它打开一个托管质谱数据的 csv 文件列表,使用 Numpy.genfromtxt 收集数据,使用 statsmodels 根据这些数据进行计算,并将结果返回到编译后的 excel 文件中。在 CSV 文件中,标题和内部结构的大小可能会根据实验的运行条件而变化。
现在我使用我用 configparser 读取的配置文件,并且针对不同的实验条件使用不同的配置文件。然而,这很笨拙。
我想要做的是测量标头大小和数据帧的长度,而不是从配置文件中读取它。每个同位素的数据都以字符串开头,例如:
*#ISOTOPE, 'Ar36:L2S1'* and *#ISOTOPE, 'Ar37:L1S1'*
后面是每个同位素的数据(3 列),例如:
*#ISOTOPE, 'Ar36:L2S1'*
No, Time, Intensity
1, 101.4685919, 1.845379369941e-003
2, 102.4901003, 2.153738546096e-003
.....
599, 701.1342959, 2.087938052439e-003
600, 702.1343039, 2.000204060898e-003
(blank line)
*#ISOTOPE, 'Ar37:L1S1'*
No, Time, Intensity
1, 101.4685919, -1.103785922163e-004
2, 102.4901003, 3.526673114000e-004
等等
我想确定每个同位素的数据行号和数据长度。
然后,当我尝试导入整个数据文件而不忽略标题(计算行索引)时,我得到与列数相关的错误。我尝试 usecols = 1 忽略其余部分,但这不起作用。(valueerror)
我认为有一个简单的解决方案,但到目前为止我的编程技能不是很好。
任何人都可以帮忙吗?
干杯
解决方案
尚不完全清楚,但我的理解是您在单个文件中有一堆 CSV-ish 数据集,每个文件都有一个标题行(以 开头*#ISOTOPE
)和一个空白的“页脚”行?
根据大小,一个选项可能是以基本方式打开文件(使用open
内置),然后循环:
- 处理魔术头(读取一行并解析)
- 将所有内容复制到临时文件或 StringIO 直到第一个空行
- 将 tempfile 或 StringIO 解析为 CSV,照常处理
重复直到文件结束。
推荐阅读
- c++ - 可变参数函数将 const char* 视为 char const(&)[len]
- bash - Bash:CP 会认为有扩展名的文件与没有它的文件一样重复
- azure-devops - Azure Heml Init 任务找不到 kubectl
- java - 如何使用apache poi在word中设置项目符号和文本之间的间距
- android - 使用cordova构建android应用程序时出错
- memory - 如何在 Rust 的枚举中找到最大的变体?
- javascript - JavaScript 完全禁止滚动元素
- reactjs - 从 mdc 复选框中移除涟漪效应
- django - 如何检查Django中的重复名称
- javascript - Metronic Angular 8 Login Page 身份验证服务中的可观察错误如果我们在默认组件中使用相同的源代码它正在工作