有没有一种更简单的方法来删除数组中每个字符串前面的“-”

时间:2019-01-10 13:09:45

标签: python

我正在寻找一种更简单的方法来删除列表中每个字符串前面的“-”。 (如果字符串前面有一个,则只有第一个'-')

note_tmp = [
    "-some-text",
    "-other text",
    "another-one",
    "-text number four"
]
note_done = []
for note in note_tmp:
    if note.startswith("-"):
        note_done.append(note[1:])
    else:
        note_done.append(note)

print(note_done)

我觉得这写起来容易多了...

感谢您的帮助;)

3 个答案:

答案 0 :(得分:3)

str.lstrip('-')应该这样做:

In [83]: note_tmp = [
    ...:     "-some-text",
    ...:     "-other text",
    ...:     "another-one",
    ...:     "-text number four"
    ...: ]

In [84]: [s.lstrip('-') for s in note_tmp]
Out[84]: ['some-text', 'other text', 'another-one', 'text number four']
  

S.lstrip([chars])-> str

     

返回除去前导空格的字符串S的副本。   如果指定了chars而不是None,则改为删除chars中的字符。

答案 1 :(得分:2)

您可以结合使用str.lstrip() list理解力来实现以下目的:

my_list = [
    "-some-text",
    "-other text",
    "another-one",
    "-text number four"
]

new_list = [s.lstrip('-') for s in my_list]

new_list将保留值:

['some-text', 'other text', 'another-one', 'text number four']

答案 2 :(得分:1)

只需使用列表切片和列表理解来添加替代方法;

note_tmp = [
        "-some-text",
        "-other text",
        "another-one",
        "-text number four"
    ]

new_note_tmp = [x[1:] if x[0] == '-' else x for x in note_tmp]

print(new_note_tmp)

>>>['some-text', 'other text', 'another-one', 'text number four']