скрипт Python для удаления пробелов - PullRequest
0 голосов
/ 09 мая 2018

Я довольно новичок в Python и ищу помощи! на этом у меня есть эта строка, которая имеет содержание XML. Мне нужно убрать пробелы между разными тегами.

<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>

потом это выглядит так:

<SIMPLE_RETURN><RESPONSE><DATETIME>2018-05-09T12:47:24Z</DATETIME><CODE>2014</CODE><TEXT>Too many concurrent login(s)</TEXT></RESPONSE></SIMPLE_RETURN>

Ценится, если кто-то может помочь !!

Ответы [ 7 ]

0 голосов
/ 09 мая 2018

Вот, пожалуйста:

import re
str = "<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>"

str = re.sub("\>\s+",">", str)
0 голосов
/ 09 мая 2018

Еще один способ сделать это:

k = "<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>"
k.replace(" ","")
'<SIMPLE_RETURN><RESPONSE><DATETIME>2018-05-09T12:47:24Z</DATETIME><CODE>2014</CODE><TEXT>Toomanyconcurrentlogin(s)</TEXT></RESPONSE></SIMPLE_RETURN>'
0 голосов
/ 09 мая 2018

Если вы не хотите использовать регулярные выражения, вы можете сделать это: (Мне также кажется, что для кого-то новичка легче понять, как это работает, но я не знаю, является ли это лучшим способом сделать это)

my_str = '<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>'
new_str = ''
for character in my_str:
    if character != ' ':
        new_str = new_str + character

А потом, если вы сделаете:

print(new_str)

вывод:

'<SIMPLE_RETURN><RESPONSE><DATETIME>2018-05-09T12:47:24Z</DATETIME><CODE>2014</CODE><TEXT>Toomanyconcurrentlogin(s)</TEXT></RESPONSE></SIMPLE_RETURN>'

Второй способ, которым я могу придумать, это:

new_str = ''.join(my_str.split())

Там написано «разбить my_str на пробелы, а затем соединить куски, которые следуют из этого без символа между ними». Вывод print такой же.

Надеюсь, это поможет, но, опять же, я не знаю, являются ли это наилучшими способами сделать это.

0 голосов
/ 09 мая 2018

Вы можете использовать функцию регулярного выражения sub :

import re

string = "<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>"

result = re.sub(r'> +<', '><', a)
print result
0 голосов
/ 09 мая 2018

Использование регулярное выражение .

Ex:

import re
s = """<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>"""
print(re.sub("([\>])\s+([\<])", "\g<1>\g<2>", s))
0 голосов
/ 09 мая 2018

Я думаю, это довольно просто.Вам просто нужно получить регулярное выражение для сопоставления пробелов между тегами

str string = "<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>
" 
string = re.sub(r">(\s+)<","><",string)
0 голосов
/ 09 мая 2018
import re
str = "<SIMPLE_RETURN>  <RESPONSE>    <DATETIME>2018-05-09T12:47:24Z</DATETIME>    <CODE>2014</CODE>    <TEXT>Too many concurrent login(s)</TEXT>  </RESPONSE></SIMPLE_RETURN>" 
str = re.sub("([\>])\ +([\<])", "><", str) 
print(str)
...