Xin lỗi vì tiêu đề mơ hồ, nhưng thật khó để giải thích ngắn gọn.Cách tốt nhất để tách từng phần tử chuỗi thứ n và hợp nhất thành mảng?
Về cơ bản, hãy tưởng tượng tôi có một danh sách (bằng Python) trông như thế này:
['a', 'b', 'c\nd', 'e', 'f\ng', 'h', 'i']
Từ đó, tôi muốn có được điều này:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i']
Một cách tôi đã nghĩ đến việc làm điều này đã được sử dụng reduce
như vậy:
reduce(lambda x, y: x + y.split('\n'), lst, [])
Nhưng tôi không nghĩ điều này rất hiệu quả, vì nó không tận dụng lợi thế của thực tế là chúng ta biết mọi phần tử thứ n có dấu phân tách trong nó. Bất kỳ đề xuất?
Chỉnh sửa: để biết thêm thông tin về cách mảng được xây dựng, điều này có thể gây ra sự cố.
Tôi có văn bản dưới hình thức:
Ignorable line
Field name 1|Field name 2|Field name 3|Field name 4
Value 1|Value 2|Value 3|Value 4
Value 1|Value 2|Value 3|Value 4
...
đâu chúng ta có thể có một số lượng tùy ý các tên trường, và sẽ luôn luôn là một số lượng tương đương giá trị như tên trường trên đường dây. Lưu ý rằng chúng ta có thể có các dòng mới trong các giá trị. Chúng tôi chỉ biết rằng sẽ được phân tách bằng dấu '|'. Vì vậy, chúng ta có thể có
Value 1|This is an long
value that extends over multiple
lines|Value 3|Value 4
Làm thế nào tôi hiện đang làm điều này là bằng cách làm một s.split('\n', 2)
để chúng tôi có được tên trường trong chuỗi riêng của họ, và các giá trị trong chuỗi riêng của họ. Sau đó, khi tách các giá trị bằng '|', chúng ta sẽ nhận được danh sách biểu mẫu mà tôi đã đề cập ban đầu.
những gì bạn có nghĩa là mọi phần tử thứ n ... nó trông giống như n của bạn thay đổi từ 3 đến 2 ... bên cạnh nó có thể rất nhiều nhanh ... trừ khi nó thực sự không, nhưng trong trường hợp đó bạn sẽ biết rằng đó là nút cổ chai của bạn ....tối ưu hóa sớm là gốc của tất cả các ác –
Trong ví dụ, \ n luôn luôn theo mục thứ 3 (c là chữ thứ 3 của bảng chữ cái; f là số thứ 6). Tôi tò mò điều gì khiến bạn lấy danh sách ban đầu ở định dạng này. Có lẽ mã sẽ sạch hơn nếu bạn thay đổi cách bạn xây dựng danh sách gốc ... điều này giống như một công việc xung quanh cho một trình phân tích cú pháp bị hỏng. – ramcdougal
@ramcdougal nó có thể là nó không phải là cách tốt nhất để xây dựng danh sách đó. Tôi sẽ cập nhật các bài viết với cách tôi đã nhận nó trong hình thức đó. – mp94