There are lines:

<FIELD.1107> <SUBFIELD.F>0</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <FIELD.700> <SUBFIELD.3>10005847</SUBFIELD.3><SUBFIELD.A>Мартыненко</SUBFIELD.A><SUBFIELD.B>А. В.</SUBFIELD.B> </FIELD.700> None <FIELD.1109> нет </FIELD.1109> <PUBLICATION_LEVEL>0</PUBLICATION_LEVEL> ============================================= <FIELD.1107> <SUBFIELD.F>1</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <PUBLICATION_LEVEL>100</PUBLICATION_LEVEL> <FIELD.700> <SUBFIELD.3>10005016</SUBFIELD.3><SUBFIELD.A>Яценко</SUBFIELD.A><SUBFIELD.B>А. С.</SUBFIELD.B> </FIELD.700> <FIELD.701> <SUBFIELD.3>10000768</SUBFIELD.3><SUBFIELD.A>Шерстюченко</SUBFIELD.A><SUBFIELD.B>О. А.</SUBFIELD.B> </FIELD.701> <FIELD.1109> 0.286 </FIELD.1109> ============================================= 

I would like to delete all the lines in which "None" is found. I tried to do this:

 prefixes = 'None' newlist = [x for x in authors_a if not x.startswith(prefixes)] print(newlist) 

But the result is:

 <FIELD.1107> <SUBFIELD.F>0</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <FIELD.700> <SUBFIELD.3>10005847</SUBFIELD.3><SUBFIELD.A>Мартыненко</SUBFIELD.A><SUBFIELD.B>А. В.</SUBFIELD.B> </FIELD.700> ['N', 'o', 'n', 'e'] <FIELD.1109> нет </FIELD.1109> <PUBLICATION_LEVEL>0</PUBLICATION_LEVEL> ============================================= <FIELD.1107> <SUBFIELD.F>1</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <PUBLICATION_LEVEL>100</PUBLICATION_LEVEL> <FIELD.700> <SUBFIELD.3>10005016</SUBFIELD.3><SUBFIELD.A>Яценко</SUBFIELD.A><SUBFIELD.B>А. С.</SUBFIELD.B> </FIELD.700> ['<', 'F', 'I', 'E', 'L', 'D', '.', '7', '0', '1', '>', '\n', '<', 'S', 'U', 'B', 'F', 'I', 'E', 'L', 'D', '.', '3', '>', '1', '0', '0', '0', '0', '7', '6', '8', '<', '/', 'S', 'U', 'B', 'F', 'I', 'E', 'L', 'D', '.', '3', '>', '<', 'S', 'U', 'B', 'F', 'I', 'E', 'L', 'D', '.', 'A', '>', 'Ш', 'е', 'р', 'с', 'т', 'ю', 'ч', 'е', 'н', 'к', 'о', '<', '/', 'S', 'U', 'B', 'F', 'I', 'E', 'L', 'D', '.', 'A', '>', '<', 'S', 'U', 'B', 'F', 'I', 'E', 'L', 'D', '.', 'B', '>', 'О', '.', ' ', 'А', '.', '<', '/', 'S', 'U', 'B', 'F', 'I', 'E', 'L', 'D', '.', 'B', '>', '\n', '<', '/', 'F', 'I', 'E', 'L', 'D', '.', '7', '0', '1', '>'] <FIELD.1109> 0.286 </FIELD.1109> ============================================= 

Tell me, please, how can I delete all the lines with "None"? Desired result:

 <FIELD.1107> <SUBFIELD.F>0</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <FIELD.700> <SUBFIELD.3>10005847</SUBFIELD.3><SUBFIELD.A>Мартыненко</SUBFIELD.A><SUBFIELD.B>А. В.</SUBFIELD.B> </FIELD.700> <FIELD.1109> нет </FIELD.1109> <PUBLICATION_LEVEL>0</PUBLICATION_LEVEL> ============================================= <FIELD.1107> <SUBFIELD.F>1</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <PUBLICATION_LEVEL>100</PUBLICATION_LEVEL> <FIELD.700> <SUBFIELD.3>10005016</SUBFIELD.3><SUBFIELD.A>Яценко</SUBFIELD.A><SUBFIELD.B>А. С.</SUBFIELD.B> </FIELD.700> <FIELD.701> <SUBFIELD.3>10000768</SUBFIELD.3><SUBFIELD.A>Шерстюченко</SUBFIELD.A><SUBFIELD.B>О. А.</SUBFIELD.B> </FIELD.701> <FIELD.1109> 0.286 </FIELD.1109> ============================================= 

    2 answers 2

    I finished the code from the question a little.

    Try:

     text = """\ <FIELD.1107> <SUBFIELD.F>0</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <FIELD.700> <SUBFIELD.3>10005847</SUBFIELD.3><SUBFIELD.A>Мартыненко</SUBFIELD.A><SUBFIELD.B>А. В.</SUBFIELD.B> </FIELD.700> None <FIELD.1109> нет </FIELD.1109> <PUBLICATION_LEVEL>0</PUBLICATION_LEVEL> ============================================= <FIELD.1107> <SUBFIELD.F>1</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <PUBLICATION_LEVEL>100</PUBLICATION_LEVEL> <FIELD.700> <SUBFIELD.3>10005016</SUBFIELD.3><SUBFIELD.A>Яценко</SUBFIELD.A><SUBFIELD.B>А. С.</SUBFIELD.B> </FIELD.700> <FIELD.701> <SUBFIELD.3>10000768</SUBFIELD.3><SUBFIELD.A>Шерстюченко</SUBFIELD.A><SUBFIELD.B>О. А.</SUBFIELD.B> </FIELD.701> <FIELD.1109> 0.286 </FIELD.1109> ============================================= """ prefixes = 'None' lines = [line for line in text.splitlines() if not line.startswith(prefixes)] text = '\n'.join(lines) print(text) 

    Result:

     <FIELD.1107> <SUBFIELD.F>0</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <FIELD.700> <SUBFIELD.3>10005847</SUBFIELD.3><SUBFIELD.A>Мартыненко</SUBFIELD.A><SUBFIELD.B>А. В.</SUBFIELD.B> </FIELD.700> <FIELD.1109> нет </FIELD.1109> <PUBLICATION_LEVEL>0</PUBLICATION_LEVEL> ============================================= <FIELD.1107> <SUBFIELD.F>1</SUBFIELD.F><SUBFIELD.J>1</SUBFIELD.J><SUBFIELD.R>0</SUBFIELD.R><SUBFIELD.S>0</SUBFIELD.S><SUBFIELD.W>0</SUBFIELD.W><SUBFIELD.Z>0</SUBFIELD.Z> </FIELD.1107> <PUBLICATION_LEVEL>100</PUBLICATION_LEVEL> <FIELD.700> <SUBFIELD.3>10005016</SUBFIELD.3><SUBFIELD.A>Яценко</SUBFIELD.A><SUBFIELD.B>А. С.</SUBFIELD.B> </FIELD.700> <FIELD.701> <SUBFIELD.3>10000768</SUBFIELD.3><SUBFIELD.A>Шерстюченко</SUBFIELD.A><SUBFIELD.B>О. А.</SUBFIELD.B> </FIELD.701> <FIELD.1109> 0.286 </FIELD.1109> ============================================= 
    • Thank you for your reply. "None", indeed, retired, but now in their place, simply, the empty string + turned out to be an "influx" of tags one on another. - Ireen1985
    • @Ireen1985, ran my code and did not see empty lines in the place of None . Added result in response - gil9red February

    Using regular expressions.

     text = ваш текст import re new_text = re.sub("\nNone(.)*?\n", "\n", text) print (new_text) 

    Ps. If the first line starts with None, then this expression will not delete it. But you have the first line is not None, so you can and so.