Python 2.7 IO.Open Readline с дополнительным символом \ [дублировать]

Чтобы сделать дочерний элемент абсолютно неподвижным из его родительского элемента, вам необходимо установить относительное положение в исходном элементе И абсолютной позиции дочернего элемента.

Тогда в дочернем элементе «верх» находится относительно высоты родителя. Таким образом, вам также нужно «перевести» вверх ребенка на 50% от его собственной высоты.

.base{
    background-color: green;
    width: 200px;
    height: 200px;
    overflow: auto;
    position: relative;
}
    
.vert-align {
    position: absolute;
    top: 50%;
    transform: translate(0, -50%);
}
    <div class="base">
        <div class="vert-align">
            Content Here
        </div>
    </div>

Существует другое решение используя гибкую коробку.

.base{
    background-color:green;
    width: 200px;
    height: 200px;
    overflow: auto;
    display: flex;
    align-items: center;
}
<div class="base">
    <div class="vert-align">
        Content Here
    </div>
</div>

Вы найдете преимущества / недостатки для обоих.

31
задан Zero Piraeus 6 June 2014 в 16:36
поделиться

2 ответа

То, что вы видите, представляет собой представление из my_string, созданное его методом __repr__() . Если вы его распечатаете, вы увидите, что на самом деле у вас есть одна обратная косая черта, как вы и предполагали:

>>> print(my_string)
why\does\it\happen?

В приведенной ниже строке есть три символа , а не четыре :

>>> 'a\\b'
'a\\b'
>>> len('a\\b')
3

Вы можете получить стандартное представление строки (или любого другого объекта) с помощью встроенной функции repr() :

>>> print(repr(my_string))
'why\\does\\it\\happen?'

Python представляет обратную косую черту в качестве \\, потому что обратная косая черта является escape-символом - например, \n представляет новую строку, а \t представляет вкладку.

Иногда это может вам помочь в проблему:

>>> print("this\text\is\not\what\it\seems")
this    ext\is
ot\what\it\seems

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

>>> print("this\\text\is\what\you\\need")
this\text\is\what\you\need

Когда Python возвращает представление строки, он играет безопасно, избегая всех обратных косых черт (даже если они иначе не были бы частью побега последовательность), и это то, что вы видите. Однако сама строка содержит только одну обратную косую черту.

Более подробную информацию о строковых литералах Python можно найти по адресу: литералы String и Bytes в документации Python.

49
ответ дан wim 25 August 2018 в 21:40
поделиться

Как ответ Zero Piraeus объясняет, что использование одиночных обратных косых черт, подобных этому (вне исходных литералов строки ), является плохой идеей.

Но есть дополнительная проблема: в будущем будет ошибкой использовать неопределенную escape-последовательность, такую ​​как \d, вместо того, чтобы означать буквальную обратную косую черту, а затем d. Итак, вместо того, чтобы просто повезти, что ваша строка использовала \d вместо \t, чтобы она делала то, что вы, вероятно, хотели, она определенно не сделает то, что вы хотите.

Начиная с версии 3.6, уже поднимает DeprecationWarning, хотя большинство людей этого не видит. Он будет SyntaxError в некоторой будущей версии.


Во многих других языках, включая C, использование обратной косой черты, которая не запускает escape-последовательность, означает, что обратная косая черта игнорируется.

На нескольких языках, включая Python, обратная косая черта, которая не запускает escape-последовательность, является буквальной обратной косой чертой.

На некоторых языках, чтобы избежать путаницы в отношении того, является ли язык C-like или Python-like, и чтобы избежать проблемы с работой \Foo, но \foo не работает, обратная косая черта, которая не запускает escape-последовательность, является незаконной.

3
ответ дан abarnert 25 August 2018 в 21:40
поделиться
Другие вопросы по тегам:

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