簡體   English   中英

當我有多個不同長度的字符串時,有沒有辦法將一個字符放在所有字符串的相同索引處

[英]Is there a way when i have multiple strings with different lengths to place a character at the same index for all strings

我正在 python 中制作 discord 機器人。 今天我抓取了一個網站,我想用我抓取的所有信息制作一個字符串。 我遇到的問題是我想在不同部分之間創建一條垂直線,但是有些字符串比其他字符串長,例如我想創建這個:

蘋果\s |
梨(\s) |

但是因為 2 個字符串的長度不同,所以 '|' 不會是一條直線。 我現在的代碼是這樣的:

def print_tracked_xp(self, XpDict):
        trackedStuff = """Skill    | Today's XP    | Yesterday's XP    | Weekly XP    \n"""
    for key in XpDict:
        trackedStuff += key + '    | ' + XpDict[key]['Daily XP'] + '    | ' + XpDict[key]['Yesterdays XP'] + '    | ' + XpDict[key]['Weekly XP'] + '\n'
    return trackedStuff

作為 output 我得到這個: https://imgur.com/FbZlTZd
但我想得到這樣的東西: https://imgur.com/VXxIP75

我會在您的打印語句中使用字符串格式化程序。 冒號后指定的任何內容都是為 print 語句中的變量保留的字符數。 我為技能分配了 13 個,為dailyXP 分配了7 個,為每周XP 分配了10 個,但是您可以輕松地修改這些值以添加緩沖區。

print('{0:13} | {1:7} | {2:7} | {3:10}'.format(skill, todayXP, yesterdayXP, weeklyXP))

有兩點需要注意:

1.) 您需要用一定數量的空格填充字符串,並對齊字符串(左、中或右)。 使用 Python F-String 可能如下所示:

strings = [
    "Strength",
    "Intelligence"
]

for string in strings:
    print(f"{string:<20}|")

2.)從您發布的圖片中,我可以看到終端(其中顯示了您獲得的 output)似乎沒有使用等寬字體。 如果您打印 output 的終端沒有等寬字體,那么用空格填充字符串的正確程度並不重要 - 一切都會錯位。 這是因為非等寬字符 fonts 中的字符具有不同的像素寬度。 顧名思義,等寬字體對所有字符都有固定的寬度。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM