Python - вывести разделенную строку, начиная с n-го элемента - PullRequest
0 голосов
/ 25 апреля 2018

У меня есть строка как результат line.split из файла.Как я могу записать эту строку в другой файл, начиная с 5-го элемента?

РЕДАКТИРОВАТЬ: я получил это, и он работает:

for line in data.readlines ()
if not line.startswith ("H"):
s = line.split ()
finaldata.write (" ".join (s [5:]))
finaldata.write ("\n")

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

Как я могу это сделать?

Спасибо!

1 Ответ

0 голосов
/ 25 апреля 2018

Чтобы ответить на исходный вопрос: если вы знаете элемент по количеству, вы должны нарезать строку.строка [5:] будет печатать 5-й символ до конца строки.Слайсинг имеет довольно простой синтаксис;Допустим, у вас есть строка

a = "a b c d e f g h" 

Вы можете нарезать "a" из 5-го символа, как этот

>>> a[5:] 
' d e f g h'

Синтаксис нарезки: [start: end: step].поэтому [5:] говорит, что начинайте с 5 и включайте остальные.Здесь есть множество примеров Понимание обозначения срезов Python

Второй вопрос не совсем ясен, чего вы пытаетесь достичь ... Вот несколько примеров общих стандартных манипуляций со строкамисо встроенными комментариями

>>> a = "a b c d e f g h"
>>> a[5] # Access the 5th element of list using the string index
' '  
>>> a[5:] # Slice the string from the 5th element to the end
' d e f g h'  
>>> a[5::2] # Get every other character from the 5th element to the end
'     '
>>> a[6::2] # Get every other character from the 6th element to the end
'defgh'
# Use a list comprehension to remove all spaces from a string
>>> "".join([char for char in a if char != " "]) 
'abcdefgh'
# remove all spaces and print from the fifth character
>>> "".join([char for char in a if char != " "])[5:] 
'fgh'
>>> a.strip(" ") # Strip spaces from the beginning and end
'a b c d e f g h' 
>>> a[5:].strip(" ")  # slice and strip spaces from both sides
'd e f g h'
>>> a[5:].lstrip(" ")  # slice and use a left strip
'd e f g h'

Редактировать: добавить комментарий другого пользователя.если вы знаете характер, а не позицию, вы можете вырезать из этого.Хотя, если у вас есть повторяющиеся символы, вы должны быть осторожны.

>>> a[a.index("e"):] # Slice from the index of character
'e f g h'
>>> b = "a e b c d e f g h e"
>>> b[b.index("e"):]
'e b c d e f g h e'
...