Cách chia một từ ghép được phân tách bằng dấu gạch nối thành hai từ riêng lẻ


8

Tôi có danh sách sau

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

Tôi đã sử dụng như sau để loại bỏ dấu gạch nối

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

Kết quả tôi nhận được

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

Kết quả mà Lý tưởng muốn là

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

Làm thế nào tôi có thể thực hiện điều này theo cách pythonic nhất (cách hiệu quả)


Câu trả lời:


6
list1 = ['Dodd-Frank', 'insurance', 'regulation']
new1 = '-'.join(list1).split('-')
print(new1)

Bản in:

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

1
list2 = []
[list2.extend(i.split("-")) for i in list1] 

danh sách 2:

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

1

Điều này có thể được thực hiện với một sự hiểu biết danh sách duy nhất, mà không cần bạn xây dựng bất kỳ cấu trúc dữ liệu trung gian nào:

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))

với đầu ra

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

1

Từ xấu đến đẹp

Đẹp thì tốt hơn xấu.

Nhưng nó thường rất bổ ích khi chuyển từ mã xấu sang mã đẹp. Vì vậy, trước tiên chúng ta sẽ tấn công vấn đề này bằng cách sử dụng các vòng lặp , và sau đó chúng ta sẽ đưa giải pháp loop-y vào một lớp lót trong một số bước.

Lần thử đầu tiên

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

Lần thử thứ hai

Chúng ta có thể làm tốt hơn bằng cách chia nhỏ sublisttrong tiêu đề của forvòng lặp bên trong , để tránh việc gán ngay trước vòng lặp.

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

Và cho Đạo luật cuối cùng ...

Bây giờ chúng ta có vòng lặp của chúng ta ở dạng lặp đi lặp lại , chúng ta có thể thuận tiện xoa bóp nó thành một lớp lót.

res = [subitem for item in list1 for subitem in item.split("-")]
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.