words = ["hhhh", "你你你你你你"]
max_length = 0
# Find the max length string in the array
# For kanji strings, the max length is doubled
for line in words:
line_length = 0
try:
line.encode('ascii')
except UnicodeEncodeError:
line_length = 2 * len(line)
else:
line_length = len(line)
if max_length < line_length:
max_length = line_length
# Find the number of spaces to add by subtracting max line length by length of current line
# If current line is kanji, it is twice a ascii string length
for line in words:
space = 0
try:
line.encode('ascii')
except UnicodeEncodeError:
space = max_length - (len(line)*2)
else:
space = max_length - len(line)
print((' ')*space + line)
可以对
column
的最后两项使用r.just
问题是日文字符的宽度比英文字符宽一点,还有空格
这种情况有解决办法。你只需要计算这两种语言的宽度。你知道吗
你可以得到这样的东西。你知道吗
您可以使用
|
来找到宽度的关系。 在这里,我想,5个日语字符几乎等于9个英语字符(别忘了减去|
)当你得到宽度关系。你知道吗
那么我想你可能知道如何计算他们应该适合的长度。你知道吗
抱歉,以上错误或误导性的建议。我意识到除非你找到一个不同宽度的空间来容纳不同的语言字符,否则你无法使它对齐。你知道吗
但我想我可能会发现一些相关的问题和一些有用的包装。你知道吗
Display width of unicode strings in Python [duplicate]
kitchen.text.display.textual_width 只是为了Python2.7可悲。。。你知道吗
似乎汉字(和中文)的长度是ascii的两倍。你知道吗
因此,我将使用
.encode('ascii')
和UnicodeEncodeError
来检查一行是否是ascii。(根据这里的答案:https://stackoverflow.com/a/196391/837627)如果是ascii,我们需要在行前面有更多的空格。你知道吗
这里有一个解决方案:
输出:
第一行是4个ascii字符长。第二行是6个汉字长==12个ascii字符长。所以第一行前面需要
12-4=8
个空格(MONOSPACE!!!)。它在StackOverflow中看起来不正确,但在terminal中,它将由于单空格字体而对齐。你知道吗顺便说一句,我用Python3写了这个解决方案。你知道吗
相关问题 更多 >
编程相关推荐