【发布时间】:2015-06-07 19:49:31
【问题描述】:
我正在尝试从包含数千个序列的 .txt 文件中提取字符串,并使用这些字符串编写 CSV。我已经从原始 .txt 文件中删除了所有不相关的信息,这是我现在拥有的文档的格式:
DEFINITION Homo sapiens haplogroup HV5 mitochondrion, complete genome.
ACCESSION DQ377992
/haplogroup="HV5"
/pop_variant="Ashkenazi Jew"
/note="ethnicity:Ashkenazi Jew; origin_locality:Belarus:Homel' Volast', Vyetka; origin_coordinates:52.51 N 31.17 E"
DEFINITION Homo sapiens haplotype U5b1c mitochondrion, complete genome.
ACCESSION DQ661681
/haplotype="U5b1c"
/note="Native American (Cherokee)"
我正在尝试提取入藏号、单倍型或单倍群、种族、位置 (origin_locality)、坐标 (origin_coordinates) 以及可能已放入 /note= 的任何其他信息到 csv。我面临的一个问题是,并非每个序列都包含所有信息,而且并非所有字符串都包含在自己的引号中。
我如何提取入藏号、引号之间的字符串并确保我将正确的字符串提取到正确的序列中?另外我将如何处理仅用分号分隔的字符串?
编辑:另一个问题没有解决我主要关心的 CSV 中缺少的信息或结果对齐问题。
【问题讨论】:
-
Click here 开始您的 Python 模式匹配魔法世界之旅。
-
@Endzior 我很欣赏正则表达式可能是最简单的方法,但是向我发送一个链接并不能帮助我弄清楚如何有效地保持每个序列分开,因此一个丢失的字符串不会搞砸所有结果。
-
您可以使用正则表达式来查找您感兴趣的内容,例如:
^ACCESSION\s([A-Z0-9]*)$将为您提供字符串中的所有加入号码 -
您希望从您提供的输入中得到什么?
-
@PadraicCunningham 我想要一个 csv,其中有一列用于登录号、单倍型、位置等,然后是一行中的登录号(代表单个序列)的所有值。例如,如果一个序列没有已知的单倍型,我该如何输入空值?