我有1000个文件;每个文件的开头都是这样的:
!dataset_description = Analysis of POF D119 mutation.
!dataset_type = Expression profiling by array
!dataset_pubmed_id = 17318176
!dataset_platform = GPL1322
目的:我想把这些信息转换成一个列表,这样我就可以在所有文件之间制作一个excel电子表格;也就是说,我想让列表看起来像这样:
[Analysis_of_POF_D119_mutation,Expression_profiling_by_array,17318176,GPL1322]
我有这个代码(这只是为了提取第一个变量,“!然而,我随后会在每个感兴趣的变量上运行代码,即!数据集类型!数据集\u pubmed \u id!数据集(U平台):
OpenDataset = open(sys.argv[1], 'r')
Dataset = OpenDataset.readlines()
ListOfInformation = []
formatted_line = lambda x: "_".join(line.strip().split("=")[x].split())
for line in Dataset:
if line.startswith("!dataset_description"):
description = formatted_line(1)
print description
代码可以工作,但是,我现在正处于理解python基础知识的阶段,我想开始更“pythonically”地编写代码。我有两个问题。你知道吗
我试着把变量改成行的开头,这是真正的变量,这样做:
formatted_line = lambda x: "_".join(line.strip().split("=")[1].split()) if line.startswith(x)
但是,此代码返回语法错误。你知道吗
有人知道如何使上述lambda表达式工作。你知道吗
你当然可以有一个没有参数的lambda表达式。你知道吗
但是,在这种情况下,实际上应该传递一个参数:行本身。这是您正在操作的对象,因此应该将其传递到函数中。你知道吗
您的
if
语句不起作用,因为Python中的inline if必须始终有else子句。在本例中,else中的值是空字符串。你知道吗所以:
如果您只想读取值,直到行停止以开始!,您可以使用
itertools.takewhile
:它引发
SyntaxError
,因为您缺少一个else
分支。“expression if”或“inline if”的语法为:<value to return when True> if <condition> else <value when False>
不能使用elif
。你知道吗所以代码可能是这样的:
相关问题 更多 >
编程相关推荐