【发布时间】:2025-11-30 23:05:01
【问题描述】:
我刚开始使用 python 并试图将我的一些 R 代码转换为 python。任务比较简单;我有许多带有变量名(在本例中为单元格行)和值(IC50)的 csv 文件。我需要提取所有文件之间共享的所有变量及其值。其中一些文件共享保存变量,但格式不同。例如,在某些文件中,变量只是“Cell_line”,而在其他文件中,它是 MEL:Cell_line。因此,首先要进行直接字符串比较,我需要将它们格式化为相同,因此我尝试使用 str.split() 来这样做。可能有更好的方法来做到这一点,但现在我使用以下代码:
import csv
import os
# Change working directory
os.chdir("/Users/joshuamannheimer/downloads")
file_name="NCI60_Bleomycin.csv"
with open(file_name) as csvfile:
NCI_data=csv.reader(csvfile, delimiter=',')
alldata={}
for row in NCI_data:
name_str=row[0]
splt=name_str.split(':')
n_name=splt[1]
alldata[n_name]=row
[1] name_str.split 返回一个长度为 2 的列表。由于我想要的部分在“:”之后,我想要第二个元素,它应该被索引为 splt[1],因为 splt[0] 是 python 中的第一个。但是,当我运行代码时,我收到此错误消息“IndexError: list index out of range” 我正在尝试长度为 2 的列表中的第二个元素,因此我不知道为什么它超出了范围。任何帮助或建议将不胜感激。
【问题讨论】:
-
你确定最多只有一个
:吗? -
它应该适用于
"MEL:Cell_line";它会在"Cell_line"上失败,因为它只有splt[0]。您可以使用splt[-1]始终获取最后一个元素,无论有多少。
标签: python indexing string-split