如何返回垂直对齐的文本(python3)

时间:2017-02-22 17:24:33

标签: python string python-3.x

我是编程的初学者。 我正在创建返回垂直对齐文本的代码,该文本排除非字母数字。它也应该按空格改变线条,如

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")

2 个答案:

答案 0 :(得分: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   

注意:

  • 我会养成使用正则表达式进行任何字符串操作的习惯。
  • 您永远不应该与TrueFalse进行比较,只需if x:if not x:
  • ' '.join(row) for row in ...generator expression,您可以将其传递给任何需要迭代的函数。

答案 1 :(得分: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")