【问题标题】:How to split a compound word split by hyphen into two individual words如何将由连字符拆分的复合词拆分为两个单独的词
【发布时间】:2020-03-25 22:31:50
【问题描述】:

我有以下列表

list1= ['Dodd-Frank', 'insurance', 'regulation']

我使用以下删除连字符

new1 =[j.replace('-', ' ') for j in list1]

我得到的结果

new1= ['Dodd Frank', 'insurance', 'regulation']

理想中想要的结果是

new1= ['Dodd', 'Frank', 'insurance', 'regulation']

我怎样才能以最pythonic(有效的方式)完成此操作

【问题讨论】:

标签: python python-3.x string list


【解决方案1】:

使用yield from的变化

list1= ['Dodd-Frank', 'insurance', 'regulation']

def hyphen_split(list1):
    for sublst in list1:
        yield from sublst.split("-")

print(list(hyphen_split(list1)))

输出

['Dodd', 'Frank', 'insurance', 'regulation']

[Program finished]

【讨论】:

    【解决方案2】:
    list1 = ['Dodd-Frank', 'insurance', 'regulation']
    new1 = '-'.join(list1).split('-')
    print(new1)
    

    打印:

    ['Dodd', 'Frank', 'insurance', 'regulation']
    

    【讨论】:

      【解决方案3】:

      从丑到美

      美胜于丑。

      但是,从丑陋的代码转向漂亮的代码通常是有益的。所以,我们将首先使用 loops 来解决这个问题,然后我们将 loop-y 解决方案按摩成 one-liner多个步骤。

      第一次尝试

      res = []
      for item in list1:
          sublist = item.split("-")
          for subitem in sublist:
              res.append(subitem)
      

      第二次尝试

      我们可以通过将sublist拆分到内部for循环的头部来做得更好,以避免在循环之前进行赋值。

      res = []
      for item in list1:
          for subitem in item.split("-"):
              res.append(subitem)
      

      最后一幕……

      现在我们已经有了 iterate-then-append 形式的循环,我们可以方便地将它按摩成单线。

      res = [subitem for item in list1 for subitem in item.split("-")]
      

      【讨论】:

        【解决方案4】:

        这可以通过单个列表理解来完成,而无需您 构造任何中间数据结构:

        my_list = ['Dodd-Frank', 'insurance', 'regulation']
        
        def split_hyphens(lst):
            return [i for word in lst for i in word.split("-")]
        
        print(split_hyphens(my_list))
        

        有输出

        ['Dodd', 'Frank', 'insurance', 'regulation']
        

        【讨论】:

          【解决方案5】:
          list2 = []
          [list2.extend(i.split("-")) for i in list1] 
          

          列表2:

          ['Dodd', 'Frank', 'insurance', 'regulation']
          

          【讨论】:

            猜你喜欢
            • 2020-03-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-06-12
            • 1970-01-01
            • 1970-01-01
            • 2019-01-11
            • 2022-01-18
            相关资源
            最近更新 更多