Так как Вы используете Ubuntu, и не Kubuntu, я предполагаю, что Вы используете GNOME. Вы могли бы интересоваться Интеграция Подрывной деятельности Наутилуса описаны на той ссылке.
Внимательно посмотрите на свой вывод:
5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5
^ ^ ^
Я выделил «5», «9», «5» исходной строки. Метод Python join ()
является строковым и принимает список вещей, которые нужно соединить со строкой. Более простой пример может помочь объяснить:
>>> ",".join(["a", "b", "c"])
'a,b,c'
«,» вставляется между каждым элементом данного списка. В вашем случае ваш «список» представляет собой строковое представление «595», которое рассматривается как список [«5», «9», «5»].
Похоже, что вы ищете +
вместо:
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid
Чтобы добавить строку, просто объедините ее знаком +
.
Например,
>>> a = "Hello, "
>>> b = "world"
>>> str = a + b
>>> print str
Hello, world
join
соединяет строки вместе с разделителем. Разделитель - это то, что ты
поместите прямо перед соединением
. Например,
>>> "-".join([a,b])
'Hello, -world'
Join принимает список строк в качестве параметра.
join
принимает в качестве аргумента повторяющуюся вещь. Обычно это список. Проблема в вашем случае заключается в том, что строка сама является итерируемой, выдавая каждый символ по очереди. Ваш код разбивается на следующее:
"wlfgALGbXOahekxSs".join("595")
, который действует так же, как этот:
"wlfgALGbXOahekxSs".join(["5", "9", "5"])
, и поэтому производит вашу строку:
"5wlfgALGbXOahekxSs9wlfgALGbXOahekxSs5"
Строки как итерируемые объекты - одна из самых запутанных начальных проблем с Python.
Чтобы подробнее рассказать о том, что говорят другие, если вы хотите использовать соединение для простого объединения двух строк, вы должны сделать это:
strid = repr(595)
print ''.join([array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring(), strid])
join () предназначен для объединения всех элементов списка. Для конкатенации только двух строк "+" имеет больше смысла:
strid = repr(595)
print array.array('c', random.sample(string.ascii_letters, 20 - len(strid)))
.tostring() + strid