2013-06-21 2 views
3

я не мог понять это с документацией Python, так что, может быть, я могу спросить его здесь:Как удалить первый символ из объекта StringIO?

import StringIO 
line = StringIO.StringIO() 
line.write('Hello World') 

Есть ли способ я могу использовать, что будет делать то, что line[1:] бы на шнурке, так line.getvalue() вернется ello World?

Спасибо.

+1

Вы должны ** ** вызов 'StringIO' для создания экземпляра; 'line = StringIO.StringIO()'. '.getvalue()' возвращает строку, почему бы не срезать *, что *? –

+1

И это пахнет [проблема XY] (http://meta.stackexchange.com/questions/66377/what-is-the-xy-problem); что вы пытаетесь решить, * действительно *. –

+0

(http://stackoverflow.com/questions/4945548/removing-a-character-from-a-certain-position-in-a-string-in-python/) –

ответ

3

Я не могу понять, как это сделать с помощью line.getvalue, но вы можете использовать объекты StringIO, такие как обычные файловые объекты. Просто ищите байт 1 и читайте, как обычно.

>>> import StringIO 
>>> line = StringIO.StringIO() 
>>> line.write("Hello World") 
>>> line.seek(0) 
>>> print line.getvalue() 
Hello World 
>>> line.seek(1) 
>>> print line.getvalue() 
Hello World 
>>> line.seek(1) 
>>> print next(line) 
ello World 
>>> line.seek(1) 
>>> print line.read() 
ello World 
+0

Спасибо! seek() и read() делают именно то, что мне нужно. Есть ли способ заставить его искать от следующего символа каждый раз без использования индексной переменной? seek (i), i = i + 1 ... – VCake

+0

@VCake - Вы можете определить свою текущую позицию, используя 'tell'. вы можете искать из текущей позиции 'seek (1,1)' (я думаю) – mgilson

+0

@mgilson: Да, это правильно: https://docs.python.org/3/library/io.html#io.IOBase .seek (первое число - это смещение, которое также может быть отрицательным, второе число указывает режим поиска, где '1' устанавливает« текущее положение потока »как« начальную точку ») - добавлено в Python 3.1 (оно работает только для BytesIO, но не для StringIO: http://stackoverflow.com/questions/19981996/relative-seek-for-io-stringio-in-python3) – mozzbozz

1

StringIO ПолучитьЗначение() функция возвращает содержимое в виде строки, так что это может быть работа:

content = line.getvalue() 
print content[1:] 
Смежные вопросы