forward sla sh в строковом литерале ведет себя неожиданно - PullRequest
2 голосов
/ 26 февраля 2020

почему S1 и S2 ведут себя по-разному в отношении местоположения апострофов?

S1="1/282/03/10"
S2="4/107/03/10"
R1="".join({"N\'" ,S1,"\'" })
R2="".join({"N\'" ,S2,"\'" })

Выходы:

"N''1/282/03/10"    //R1 
"N'4/107/03/10'"    //R2

Ответы [ 2 ]

4 голосов
/ 26 февраля 2020

Это потому, что вы используете set.

set - это неупорядоченная и неиндексированная коллекция.

Итак, вы Для получения желаемых результатов необходимо использовать следующий код:

S1 = "1/282/03/10"
S2 = "4/107/03/10"
R1 = "".join(["N\'", S1, "\'"])
R2 = "".join(["N\'", S2, "\'"])

print(R1)
print(R2)

Вывод:

N'1/282/03/10'
N'4/107/03/10'
1 голос
/ 26 февраля 2020

Причина в том, что вы упаковываете "\'",S1,"'\" в set.

set - неупорядоченную коллекцию.

Чтобы избежать вышеуказанной проблемы, используйте list или tuple.

R1 = "".join(["N\'", S1, "\'"])
R2 = "".join(["N\'", S2, "\'"])

#tuple equivalent is
R1 = "".join(("N\'", S1, "\'"))
R2 = "".join(("N\'", S2, "\'"))

Вы можете использовать .format здесь вам даже не нужно использовать list или tuple.

R1="N'{}'".format(S1)
R2="N'{}'".format(S2)

Вы также можете использовать это.

R1 = "N\'" + S1 + "\'"
R2 = "N\'" + S2 + "\'"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...