Python 使用多个标识符进行解析
我试图从中实现这段代码,但我发现其中有两个bug似乎无法修复Python 使用多个标识符进行解析,python,parsing,generator,Python,Parsing,Generator,我试图从中实现这段代码,但我发现其中有两个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_one_有一个_at_符号)
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_one_有一个_at_符号)
(ii)当@identification_行后面的行或“+”行后面的行是空的,如第三个条目(@thisoneismpty)
我希望输出与我引用的帖子相同:
yield (name, body, extra)
在@this_one_有一个_at_符号的情况下
name= this_one_has_an_at_sign
body= CTCTCT
quality= @jfik9
在@thisone的情况下是空的
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
这里的期望输出和实际输出是什么?我已经添加了输出。这与我提到的问题的格式相同,但我发现了上面提到的两个bug