【问题标题】:Drop spaces from end and begin only in all list elements仅在所有列表元素中从末尾删除空格并开始
【发布时间】:2020-07-28 01:14:22
【问题描述】:

我有列表my_list

my_list = [' Cat Alfred ', ' Dog Austin Power ', ' Very very very lazy frog ']

我需要删除开头和结尾的所有空格,并允许字符之间的空格输出:

['Cat Alfred', 'Dog Austin Power', 'Very very very lazy frog']

我试过用:

pattern = r"[^\w]"
names_only_words = [(re.sub(pattern, "", name)) for name in my_list]

但这也会删除字符之间的空格

【问题讨论】:

    标签: python regex list


    【解决方案1】:

    这可以简单地使用列表推导来完成,避免使用正则表达式。

    names_only_words = [x.strip() for x in my_list]
    

    将去除字符串末端的空格,但不会去除中间的空格:

    ['Cat Alfred', 'Dog Austin Power', 'Very very very lazy frog']
    

    如果您确实想专门使用正则表达式,则可以使用以下方法:

    pattern = "^\s*(.*?)\s*$"
    names_only_words = [(re.match(pattern, name).group(1)) for name in my_list]
    

    而不是原始方法用空替换末尾的空格,它捕获了末尾空格之间的所有内容。

    【讨论】:

      【解决方案2】:

      您可以使用带有条带功能的地图:

      names_only_words = list(map(lambda x: x.strip(),my_list))
      

      https://www.tutorialspoint.com/python/string_strip.htm

      ['Cat Alfred', 'Dog Austin Power', 'Very very very lazy frog']
      

      【讨论】:

        【解决方案3】:

        你也可以这样做:

        list(map(str.strip, my_list))
        

        【讨论】:

          【解决方案4】:

          只需使用 str 类中的 for 循环和 strip() 方法:

          for text in my_list:
              text = text.strip()  # removes spaces before and after text
          

          【讨论】:

          • 正如所写,这不会产生所需的列表。
          猜你喜欢
          • 1970-01-01
          • 2018-11-30
          • 2020-11-20
          • 1970-01-01
          • 1970-01-01
          • 2013-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多