如何在python中替换列表中的特定字符串

时间:2019-03-03 14:05:08

标签: python python-3.x

我记下了在下面生成['---','---','---']的代码:

ans = []
for i in range(top, bottom):
    ans.append("-"*3)

如果我想将第一个字符串中的第一个“-”和最后一个字符串中的最后一个“-”更改为“ *”,那么如何完成下面的代码? :)

所需的输出将是:

['*--', '---', '--*']

在代码下方添加行。

3 个答案:

答案 0 :(得分:1)

如果只想添加每个字符串的第一个和最后一个字符,则需要在循环中使用循环:

ans = []
for i in range(top, bottom):
    line = []
    for j in range(right-left):
        char = '-'
        if (i == 0 and j == 0) or (i == bottom - 1 and j == (right-left) -1):
            char = '*'
        line += char
    ans.append(line)

答案 1 :(得分:1)

如果您只需要替换列表中的第一个和最后一个字符串,则意味着您必须约束循环以避免这些结束条件并以不同的方式对待它们:

ans = []

ans.append('*' + '-'*(3-1))
for _ in range(top+1, bottom-1):
    ans.append("-"*(3))
ans.append('-'*(3-1) + '*')

print(ans)
# ['*--', '---', '--*']

答案 2 :(得分:0)

由于您只想使开始和结束情况有所不同,我认为用if语句简单地处理这些特殊情况是最容易的。

示例:

[
    {
        "id": 1,
        "name": "Prosenjit Das",
        "log_date": "2019-03-02",
        "log_time": "12:10:12.247257",
        "login": null,
        "logout": null
    },
    {
        "id": 2,
        "name": "Sudipto Rahman",
        "log_date": "2019-03-02",
        "log_time": "12:10:12.247257",
        "login": "11:26:45",
        "logout": "10:49:53"
    },
    {
        "id": 3,
        "name": "Trump Khatun",
        "log_date": "2019-03-02",
        "log_time": "12:10:12.247257",
        "login": null,
        "logout": null
    }, --> was removed
]

请记住,执行检查时要从start = 0 end = 3 ans = [] for i in range(start, end): if i == start: ans.append("*" + "-" * 2) elif i == end-1: ans.append("-" * 2 + "*") else: ans.append("-" * 3) print(ans) 中减去1,因为end是互斥的(range()的第二个参数不包含在返回的列表中)。

结果:

range

我个人认为更具可读性的嵌套if-else-if语句的替代方法是:

['*--', '---', '--*']