使用多个标识符进行分析

2024-10-02 00:31:33 发布

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

我试图从Generator not working to split string by particular identifier . Python 2实现这段代码,但我发现其中有两个bug似乎无法修复

Input:
@m120204
CTCT
+
~@@!
@this_one_has_an_at_sign
CTCTCT
+
@jfik9
@thisoneisempty

+


#empty line after + and then empty line to end file (2 empty lines)

这两个错误是: (i) 当有@在“+”行之后开始代码行时,例如第二个条目(@this\u one\u有一个\u at\u符号) (ii)@identification_行之后的行或“+”行之后的行是空的,如在第3个条目中(@thisoneisempty)

我希望输出与我引用的帖子相同:

yield (name, body, extra)

在@this\u one\u有一个\u at\u符号的情况下

name= this_one_has_an_at_sign 
body= CTCTCT
quality= @jfik9

在@thisoneisempty的情况下

name= thisoneisempty
body= ''
quality= ''

我尝试使用标志,但我似乎无法解决这个问题。我知道如何不使用发电机,但我将使用大文件,所以我不想走这条路。我现在的代码是:

def organize(input_file):
    name = None
    body = ''
    extra = ''
    for line in input_file:
        line = line.strip()
        if line.startswith('@'):
            if name:
                body, extra = body.split('+',1)
                yield name, body, extra
                body = ''
            name = line
        else:
            body = body + line
    body, extra = body.split('+',1)
    yield name, body, extra

for line in organize(file_path):
    print line

Tags: to代码namelinebodythisextraone

热门问题