2014-12-15 19 views
9

Tôi đang cố gắng tách một phần của tài liệu thành các thành phần khác nhau của nó được phân cách bằng dấu và. Đây là những gì tôi có:LoạiError: split() không có đối số từ khóa

name,function,range,w,h,k,frac,constraint = str.split(str="&", num=8) 

Lỗi:

TypeError: split() takes no keyword arguments 

Ai đó có thể giải thích các lỗi với tôi và cũng cung cấp một phương pháp thay thế đối với tôi để làm cho công việc này?

Trả lời

15

Các thông số của str.split được gọi là sepmaxsplit:

str.split(sep="&", maxsplit=8) 

Nhưng bạn chỉ có thể sử dụng các tên tham số như thế này trong Python 3.x. Trong Python 2.x, bạn cần phải làm:

str.split("&", 8) 

theo ý kiến ​​của tôi là tốt nhất cho cả hai phiên bản kể từ khi sử dụng tên thực sự là thừa. str.split là một công cụ rất nổi tiếng trong Python, vì vậy tôi nghi ngờ bất kỳ lập trình viên Python nào cũng sẽ gặp khó khăn trong việc hiểu các đối số của phương thức đó có ý nghĩa gì.

Ngoài ra, bạn nên tránh đặt tên do người dùng xác định giống như tên được cài sẵn. Việc này sẽ làm lu mờ quá trình tích hợp và làm cho nó không sử dụng được trong phạm vi hiện tại. Vì vậy, tôi muốn chọn một tên khác cho chuỗi của bạn bên cạnh str.

+0

Không chỉ là không có lý do để xác định tên, nó thực sự là một lỗi để làm như vậy (ít nhất là trong Python 2.x, không biết về 3.x) ngay cả khi bạn sử dụng tên mà doc sử dụng, 'sep' và' maxsplit'. Theo đó, lưu ý rằng lỗi nói "* không * đối số từ khóa". – jez

+0

Huh. Nó hoạt động trong 3.x, vì vậy tôi nghĩ rằng nó sẽ làm việc trong 2.x là tốt. Đã cập nhật. – iCodez

+1

Nó cũng đặc biệt quan trọng để tránh nhầm lẫn người dùng mới về việc không sử dụng tên 'str', vì' str.split' * hiện * tồn tại như một phương thức không liên kết. Tôi hy vọng OP đã được nói "oh, bạn nên sử dụng' str.split() '" mà * là * true, nhưng có thể được thực hiện sai .... – jez

1

Lỗi nói rằng bạn không thể cung cấp đối số được đặt tên cho split. Bạn phải gọi split chỉ với các đối số - mà không có tên của các đối số:

name,function,range,w,h,k,frac,constraint = str.split("&", 8) 
1

chia doesnt có đối số từ khóa str hoặc num. Làm điều này thay vì:

name,function,range,w,h,k,frac,constraint = str.split('&', 8) 
Các vấn đề liên quan