2014-11-14 3 views

ответ

2

print «волшебной запятая» всегда вставляет пробелы, так что вы не можете делайте так.

У вас есть три варианта:

  1. Join слова вверх в строку, а затем распечатать эту строку: print ''.join(word[:2].lower() for word in namelist).
  2. Write непосредственно stdout вместо использования print: sys.stdout.write(word[:2].lower())
  3. Использование Python 3-style print, который может делать вещи таким образом. Сначала from __future__ import print_function в верхней части вашего кода. Затем print(word[:2].lower(), end='').
+0

+1 для Python 3-стиль 'print'. – twasbrillig

+0

@twasbrillig: На самом деле, я обычно избегаю этого, если я пишу код с кодом 2.x, потому что он, как правило, заставляет людей думать, что я пишу код 2.x/3.x и жалуюсь, когда он не работает в 3.x. Опять же, я не написал никаких новых кодов с кодом 2.x через несколько лет, поэтому ... – abarnert

4

Запятая создает пространство. Попробуйте создать список понимание и присоединиться к нему с пустой строкой:

>>> print "".join(word[:2].lower() for word in namelist) 
jodo 

Чтобы увидеть, как это работает в небольших шагов:

>>> firsts = [word[:2].lower() for word in namelist] 
>>> firsts 
['jo', 'do'] 
>>> print "".join(firsts) 
jodo 
+1

Для записи, '«А».join (MyList)' является обратным 'myString.split («А») '. – Shule

0
>>> fullname = "John Doe" 
>>> words = fullname.lower().split() 
>>> words 
['john', 'doe'] 
>>> print("".join(x[:2] for x in words)) 
jodo 

[: 2] выбирает 1-две буквы. lower преобразует их в нижний регистр. Используя +, вы можете объединить строку.

Python 2.x:

>>> print "".join(x[:2] for x in words) 
+1

Почему вы объясняете часть кода, который он уже написал, вместо части, которую вы добавили, чтобы исправить его проблему? – abarnert

+0

@abarnert сейчас хорошо :) – Hackaholic

+0

любая причина для downvoting ????, если downvote plz обеспечивает разум, поэтому его нужно исправить – Hackaholic

0

print function from Python 3 имеет параметр sep (для "разделителя"), который может быть установлен на нулевую строку. Используя это, и с помощью оператора * указать прохождение в переменное число аргументов:

from __future__ import print_function 
fullname = "John Doe" 
words = (word[:2].lower() for word in fullname.split()) 
print(*words, sep='') 
Смежные вопросы