2016-03-02 4 views
1

Может кто-нибудь, пожалуйста, помогите мне с этим в Python, у меня есть строка, которая выглядит следующим образом:Python разбора строки

Comm IF Ver 1.18c Port TCP-1 
>R5281H0000 
>L0121 @g 
>E0042A1204C0000 
>[email protected]@L0121 @g 
>S0339E1512 
> 

Я хотел бы получить строку из этого вывод, что будет выглядеть следующим образом:

R5281H0000 L0121 @g E0042A1204C0000 [email protected]@L0121 @g S0339E1512 
+0

Это из файла? или строку со многими строками? – Ian

+0

Это строка с 6 строками, поэтому string.count ('\ n') дал результат 6. – Dominik

+0

Что странно, потому что я вижу 7 строк? – Dominik

ответ

0

Предполагая, что это string:

a = " \ 
    Comm IF Ver 1.18c Port TCP- \ 
    >R5281H0000 \ 
    >L0121 @g \ 
    >E0042A1204C0000 \ 
    >[email protected]@L0121 @g \ 
    >S0339E1512 \ 
    >" 

Рассмотрите возможность использования split чтобы получить ваш результат

b = a.split('>')[1:-1] #1 is to exclude the first one, -1 to exclude the last one 

Результатом списка с элементами, которые вы хотите.

Если вы хотите, чтобы объединить их в string с некоторыми пробелами, используйте join:

c = " ".join(b) 

Редактировать шаг за шагом объяснение:

Что split делает это «расщепления» вашу строку в substrings на основе его разделителя. В этом случае разделитель будучи >, таким образом, он изменяет длинную строку:

a = " \ 
    Comm IF Ver 1.18c Port TCP- \ 
    >R5281H0000 \ 
    >L0121 @g \ 
    >E0042A1204C0000 \ 
    >[email protected]@L0121 @g \ 
    >S0339E1512 \ 
    >" 

В список строка будет содержать следующие элементы:

'Comm IF Ver 1.18c Port TCP-' #element no 0 
'R5281H0000' #no 1 
'L0121 @g' #no 2 
'E0042A1204C0000' #no 3 
'[email protected]@L0121 @g' #no 4 
'S0339E1512' #no 5 
'' #no 6 

Затем, когда вы используете ломтик индексы [1:-1], вы режете выключение первого и последнего элемента:

'below is b 

'R5281H0000' #no 0, previously 1 
'L0121 @g' #no 1, previously 2 
'E0042A1204C0000' #no 2, previously 3 
'[email protected]@L0121 @g' #no 3, previously 4 
'S0339E1512' #no 4, previously 5 

Тогда, наконец, join сделает эти строки в списке обратно в одну строку разделенных пробелом " "

R5281H0000  L0121 @g  E0042A1204C0000  [email protected]@L0121 @g  S0339E1512  
+0

Не могли бы вы объяснить мне, как работает b = a.split ('>') [1: -1], он делает то, что я хочу, но просто хотел бы посмотреть, как он это делает? – Dominik

+0

@ Доминик объяснил. Надеюсь, он заставит вас понять лучше. :) – Ian

+0

У меня все еще есть новые строки в конце каждой строки? \ r \ n – Dominik

0

Что я понимаю, что вы хотите присоединиться к каждой строке, которая начинается с > с тремя пробелами, но не включают в себя >. Вот как это сделать:

print(" ".join(s.lstrip(">") for s in string if s.startswith(">"))) 
Смежные вопросы