搜索某列中的字符串并使用sam中第1列中的字符串

2024-05-06 18:25:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我想写一个谱系分析的脚本。你知道吗

谱系档案

我有三个以制表符分隔的列(IndividualID、FatherID、motherID),如下(+-200行):

AstorSjefVN   | SjefFtS      | LunaVN   
SjefFtS       | LarsCedaVdDD | MerelFtS  
LunaVN        | CasperVdH    | WinnieVtVB  
LarsCedaVdDD  | CecoVO       | AidaFtS  
MerelFtS      | NimkoVtN     | FamkeFtS  
CasperVdH     | SammyVdH     | DonnaVdH  
WinnieVtVB    | EllertVO     | MeejkeVdH  
CecoVO        | BoaikeVhK    | FokaVO  
AidaFtS       | GovertDK     | CindyVdSJ  
NimkoVtN      | DrepaVtB     | LetahVtOH  
FamkeFtS      | CaesarFtS    | FardiFtS  

问题

我想在第2列和第3列中搜索一个字符串(例如CaesarFtS)。如果该字符串出现在其中一列中,那么接下来我将继续使用同一行第1列中的字符串(FamkeFtS),这样我就可以再次在第2列和第3列中搜索这个新字符串,依此类推。我想对此使用while循环,但我找不到如何在特定列中搜索字符串并继续使用同一行的第1列中的字符串。
通过研究,我发现使用熊猫可能是可行的?我对Python很陌生,希望你能帮我!你知道吗


Tags: 字符串脚本档案谱系winnievtvblunavnnimkovtnaidafts
2条回答
end_of_tree = False
search_string = 'WinnieVtVB'

while not end_of_tree:
    with open('pedigree', 'r') as infile:
        for line in infile.readlines():
            if search_string in [x.rstrip() for x in line.split(' | ')[1:]]:
                print('%s match found in line: %s' % (search_string, line))
                search_string = line.split(' | ')[0]
                break
        else:
            print('No FatherID or MotherID found for: %s' % search_string)
            end_of_tree = True

>> WinnieVtVB match found in line: AlanTEST | CasperVdH | WinnieVtVB
>> AlanTEST match found in line: MerelFtS | NimkoVtN | AlanTEST
>> MerelFtS match found in line: SjefFtS | LarsCedaVdDD | MerelFtS
>> SjefFtS match found in line: AstorSjefVN | SjefFtS | LunaVN
>> No FatherID or MotherID found for: AstorSjefVN

使用的输入文件示例:

AstorSjefVN | SjefFtS | LunaVN
SjefFtS | LarsCedaVdDD | MerelFtS
AlanTEST | CasperVdH | WinnieVtVB
LarsCedaVdDD | CecoVO | AidaFtS
MerelFtS | NimkoVtN | AlanTEST
CasperVdH | SammyVdH | DonnaVdH
WinnieVtVB | EllertVO | MeejkeVdH
CecoVO | BoaikeVhK | MerelFtS
AidaFtS | GovertDK | CindyVdSJ
NimkoVtN | DrepaVtB | LetahVtOH
FamkeFtS | CaesarFtS | FardiFtS

我将向您指出正则表达式字符串比较的方向。当您继续使用Python或任何语言时。Regex(正则表达式)允许复杂的字符串搜索和向后查找,就像您在这里想做的那样。你知道吗

有许多演示要学习Regex,这里是我最喜欢的网站,可以try out regex查看数据示例。你知道吗

还可以使用python函数将数据的每一行传递给它,如果字符串匹配,则可以返回所需的部分。你知道吗

相关问题 更多 >