📜  引导带 |文本实用程序(对齐、换行、粗细等)(1)

📅  最后修改于: 2023-12-03 15:25:34.352000             🧑  作者: Mango

引导带 | 文本实用程序

本程序可以方便地创建带有引导符号的列表,同时支持对齐、换行以及粗细等修饰。以下是程序使用的介绍:

创建引导带

使用程序创建引导带非常简单,只需要传入一个列表以及引导符号即可。例如:

items = ["apple", "orange", "banana"]
symbol = "-"
result = create_indent(items, symbol)

该代码段将会生成如下结果:

- apple
- orange
- banana

在默认情况下,引导符号会位于每个列表项的开头。如果要让引导符号位于列表项之后,可以使用 position 参数调整。例如:

items = ["apple", "orange", "banana"]
symbol = "-"
position = "right"
result = create_indent(items, symbol, position)

该代码段将会生成如下结果:

apple -
orange -
banana -
对齐和换行

程序还支持对齐和换行功能。默认情况下,程序会将引导符号和列表项对齐。如果要让列表项自动换行并对齐,可以使用 wrap 参数。例如:

items = ["apple", "orange", "banana", "watermelon", "strawberry"]
symbol = "-"
position = "right"
wrap = 3
result = create_indent(items, symbol, position, wrap)

该代码段将会生成如下结果:

apple  - orange - banana      
watermelon - strawberry      

在该例子中,wrap 值被设置为 3,因此程序会在每三个列表项后换行并对齐。

修改字体粗细

如果要让引导符号的字体更加粗细,可以使用 bold 参数。例如:

items = ["apple", "orange", "banana"]
symbol = "-"
bold = True
result = create_indent(items, symbol, bold=bold)

该代码段将会生成如下结果:

- **apple**
- **orange**
- **banana**
使用自定义字符串

除了默认的几个参数之外,程序还支持使用自定义字符串来替代一些默认的设置。例如,可以自定义引导符号以及缩进字符串:

items = ["apple", "orange", "banana"]
symbol = "*"
indent = "    "
result = create_indent(items, symbol, indent=indent)

该代码段将会生成如下结果:

    * apple
    * orange
    * banana
markdown格式返回

最终版程序代码片段如下:

def create_indent(items, symbol="-", position="left", wrap=None, bold=False, indent=""):
    """
    创建带有引导符号的列表,支持对齐、换行、粗细等修饰
    :param items: 列表
    :param symbol: 引导符号
    :param position: 引导符号位置,可选值包括 left 和 right,默认为 left
    :param wrap: 自动换行的数量,当列表项数量大于此值时会自动换行
    :param bold: 是否加粗引导符号,默认为 False
    :param indent: 自定义缩进字符,默认为空格
    :return: 带有引导符号的列表,以 markdown 格式返回
    """
    if position == "right":
        symbol += " "
    if bold:
        symbol = f"**{symbol}**"
    if wrap is None:
        result = f"{indent}{symbol} {items[0]}\n"
        for item in items[1:]:
            result += f"{indent}{symbol} {item}\n"
    else:
        wrapped_items = [items[i:i + wrap] for i in range(0, len(items), wrap)]
        result = f"{indent}{symbol} {wrapped_items[0][0]}"
        for item in wrapped_items[0][1:]:
            result += f" {item}"
        result += "\n"
        for wrapped_item in wrapped_items[1:]:
            if len(wrapped_item) == wrap:
                result += f"{indent}{symbol} {wrapped_item[0]}"
                for item in wrapped_item[1:]:
                    result += f" {item}"
                result += "\n"
            else:
                result += f"{indent}{symbol} {wrapped_item[0]}"
                for item in wrapped_item[1:]:
                    result += f" {item}"
                result += "\n"
    return result