Python readline () из строки?

Вам нужно создать свое собственное поле предупреждения следующим образом:

function jAlert(text, customokay){
	document.getElementById('jAlert_content').innerHTML = text;
    document.getElementById('jAlert_ok').innerHTML = customokay;
    document.body.style.backgroundColor = "gray";
    document.body.style.cursor="wait";
}



jAlert("Stop! Stop!", "<b>Okay!</b>");
#jAlert_table, #jAlert_th, #jAlert_td{
    border: 2px solid blue;
    background-color:lightblue;
    border-collapse: collapse;
    width=100px;
}

#jAlert_th, #jAlert_td{
    padding:5px;
    padding-right:10px;
    padding-left:10px;
}

#jAlert{
    /* Position fixed */
    position:fixed;
    /* Center it! */
    top: 50%;
    left: 50%;
    margin-top: -50px;
    margin-left: -100px;
}
<p>TEXT</p>
<div id="jAlRem">
    <div id="jAlert">
        <table id="jAlert_table">
            <tr id="jAlert_tr">
                <td id="jAlert_td">  <p id="jAlert_content"></p>  </td>
                <td id="jAlert_td">  <button id='jAlert_ok'  onclick="jAlertagree()"></button>  </td>
            </tr>
        </table>
    </div>
</div>





<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>
<p>TEXT</p>


<script>
function jAlertagree(){
    var parent = document.getElementById('jAlRem');
    var child = document.getElementById('jAlert');
    parent.removeChild(child);
    document.body.style.backgroundColor="white";
    document.body.style.cursor="default";
}
</script>

Часть js получает элемент в HTML, чтобы создать окно предупреждения, затем удаляет его после того, как пользователь нажимает ok.

Вы можете вызвать оповещение, используя jAlert("Custom Text", "Ok!");

29
задан Brian McFarland 19 September 2011 в 14:52
поделиться

5 ответов

Python 2

Вы можете использовать StringIO :

>>> msg = "Bob Smith\nJane Doe\nJane,\nPlease order more widgets\nThanks,\nBob\n"
>>> msg
'Bob Smith\nJane Doe\nJane,\nPlease order more widgets\nThanks,\nBob\n'
>>> import StringIO
>>> buf = StringIO.StringIO(msg)
>>> buf.readline()
'Bob Smith\n'
>>> buf.readline()
'Jane Doe\n'

Обязательно используйте cStringIO , если производительность важна.

Python 3

Вы можете использовать io.StringIO :

>>> import io
>>> buf = io.StringIO(msg)
>>> buf.readline()
'Bob Smith\n'
>>> buf.readline()
'Jane Doe\n'
>>> len(buf.read())
44
66
ответ дан jterrace 19 September 2011 в 14:52
поделиться

Почему бы просто не сделать столько разбиений, сколько вам нужно? Поскольку вы используете все результирующие части (включая оставшуюся часть строки), загрузка его в другой буферный объект и последующее чтение его обратно, вероятно, будет медленнее, а не быстрее (плюс накладные расходы на вызовы функций) .

Если вы хотите выделить первые N строки, просто сделайте .split("\n", N).

>>> foo = "ABC\nDEF\nGHI\nJKL"
>>> foo.split("\n", 1)
['ABC', 'DEF\nGHI\nJKL']
>>> foo.split("\n", 2)
['ABC', 'DEF', 'GHI\nJKL']

Итак, для вашей функции:

def handleMessage(msg):
   headerTo, headerFrom, msg = msg.split("\n", 2)
   sendMessage(headerTo,headerFrom,msg)

или, если вы действительно хотите получить фантазию:

# either...
def handleMessage(msg):
   sendMessage(*msg.split("\n", 2))

# or just...
handleMessage = lambda msg: sendMessage(*msg.split("\n", 2))
21
ответ дан Amber 19 September 2011 в 14:52
поделиться

Самый простой способ для Python 2 и 3 - использовать метод строки splitline (). Это возвращает список строк.

>>> "some\nmultilene\nstring\n".splitlines()

['some', 'multiline', 'string']

11
ответ дан Mario Wanka 19 September 2011 в 14:52
поделиться

Делайте так, как это делает StringIO:

i = self.buf.find('\n', self.pos)

Так что это значит:

pos = msg.find("\n")
first_line = msg[:pos]
...

Кажется более элегантным, чем использование всего StringIO ...

5
ответ дан Glaslos 19 September 2011 в 14:52
поделиться

в строке Python есть метод splitline

msg = "Bob Smith\nJane Doe\nJane,\nPlease order more widgets\nThanks,\nBob\n"
msg_splitlines = msg.splitlines()
headerTo = msg_splitlines[0]
headerFrom= msg_splitlines[1]
sendMessage(headerTo,headerFrom,msg)
1
ответ дан Sérgio 19 September 2011 в 14:52
поделиться
Другие вопросы по тегам:

Похожие вопросы: