2017-02-22 26 views
2

Я очень новичок в программировании. Я создаю код, который возвращает вертикально выровненный текст, который исключает не-буквенно-цифровой. И также должны быть изменены линии по пробелам, такие какКак вернуть вертикально выровненный текст (python3)

H W 
e o 
l r 
l l 
o d 

Мой код здесь. Я мог отображать текст по вертикали. Но эта функция не возвращается. Так как я могу отредактировать это, чтобы вернуть вертикальный текст? Было бы очень полезно, если бы вы могли объяснить детали.

from itertools import zip_longest 

def transposition(string): 
    new_text = str() 
    for i in string: 
    x = i.isalpha() 

    if x == False: 
     i = ' ' 

    new_text += i 

for y in zip_longest(*new_text.split(), fillvalue=' '): 
    print (' '.join(y)) 

transposition("Hello, World") 
+0

Его следует изменить по пространству. – user7421972

ответ

0

Это то, что вы хотите?

def transposition(string): 
    new_text = str() 
    for i in string: 
    x = i.isalpha() 

    if x == False: 
     i = ' ' 

    new_text += i 

    for y in new_text: 
    print ('\n'.join(y)) 

transposition("Hello, World") 
+0

Случай с «Hello, world» Я хочу отобразить с двумя строками, которые разделены после Hello. Поэтому я мог отображать его, но я хочу использовать возврат. Извините за мой очень плохой английский ... – user7421972

1

Если я правильно понял ваш вопрос, вы хотите функцию, которая принимает строку, такую ​​как "hello world" и возвращает строку, такую ​​как "h w\ne o\nl r\n" и т.д.

Если это так, я думаю, что вы, по существу, есть:

from itertools import zip_longest 
import re 

def transposition(string): 

    clean_str = re.sub('[^\w]', ' ', string) 
    return '\n'.join(
     ' '.join(row) 
     for row in zip_longest(*clean_str.split(), fillvalue=' ')) 

print(transposition("Hello, World... how are you?")) 

>> H W h a y 
>> e o o r o 
>> l r w e u 
>> l l 
>> o d 

Примечание:

  • Я хотел бы получить в привычке использовать регулярный выраж сущности для любых строковых манипуляций.
  • Вы не должны сравниваться с True или False, просто сделайте if x: или if not x:.
  • ' '.join(row) for row in ... является generator expression, который вы можете передать любой функции, которая принимает итерируемый.
+0

О, потрясающе. Я не знал, как использовать возврат. Большое спасибо !!! – user7421972

+0

@ user7421972 добро пожаловать, не забудьте принять ответ, если кто-то работал на вас! – daphtdazz

 Смежные вопросы

  • Нет связанных вопросов^_^