Có cách nào để tôi có thể phân tích cú pháp một chuỗi phân tách bằng dấu phẩy đơn lẻ mà không sử dụng bất kỳ thứ gì lạ mắt như csv.reader (..) không? Tôi có thể sử dụng hàm split(',')
nhưng không hoạt động khi giá trị cột hợp lệ chứa chính dấu phẩy. Thư viện csv có các trình đọc để phân tích cú pháp các tệp CSV xử lý chính xác trường hợp đặc biệt nói trên, nhưng tôi không thể sử dụng chúng vì tôi chỉ cần phân tích cú pháp một chuỗi duy nhất. Tuy nhiên, nếu Python CSV cho phép phân tích cú pháp một chuỗi riêng thì đó là tin tức đối với tôi.Phân tích cú pháp một chuỗi CSV?
5
A
Trả lời
11
Hãy xem xét kỹ hơn các tài liệu cho các mô-đun csv
, mà nói:
reader(...)
csv_reader = reader(iterable [, dialect='excel']
[optional keyword args])
for row in csv_reader:
process(row)
The "iterable" argument can be any object that returns a line
of input for each iteration, such as a file object or a list. The
optional "dialect" parameter is discussed below. The function
also accepts optional keyword arguments which override settings
provided by the dialect.
Vì vậy, nếu bạn có chuỗi:
>>> s = '"this is", "a test", "of the csv", "parser"'
Và bạn muốn "đối tượng trả về một dòng đầu vào cho mỗi lặp", bạn chỉ có thể quấn dây của bạn trong một danh sách:
>>> r = csv.reader([s])
>>> list(r)
[['this is', 'a test', 'of the csv parser']]
Và đó là cách bạn phân tích một chuỗi với các module csv
.
9
Bạn vẫn có thể phân tích cú pháp một chuỗi đơn với csv
. Sử dụng StringIO để viết một chuỗi buffer (còn gọi là file bộ nhớ):
import csv
from StringIO import StringIO
s = "your string"
buff = StringIO(s)
reader = csv.reader(buff)
for line in reader:
print(line)
+0
Đối với Python 3 sử dụng 'từ io nhập khẩu StringIO' xem [ở đây] (https://docs.python.org/3/library/io.html#text-io) –
Các vấn đề liên quan
- 1. Phân tích cú pháp CSV nhanh
- 2. Tùy chọn phân tích cú pháp CSV với .NET
- 3. Phân tích cú pháp tệp CSV SSE 4.2
- 4. Kết hợp phân tích cú pháp phân tích cú pháp, phân tích cú pháp và phân tích cú pháp rừng
- 5. Chuỗi phân tích cú pháp thành TimeSpan
- 6. Phân tích cú pháp Python CSV chính xác
- 7. Chuỗi phân tích cú pháp thành Double.NaN
- 8. Sử dụng Python để phân tích cú pháp 12GB CSV
- 9. Chuỗi FUNCODE Phân tích cú pháp
- 10. php chuỗi phân tích cú pháp xml
- 11. chuỗi phân tích cú pháp jquery
- 12. Python - cách đọc/phân tích cú pháp csv như dòng?
- 13. Chuỗi định dạng phân tích cú pháp
- 14. Phân tích cú pháp tệp CSV trong Swift
- 15. csv phân tích cú pháp đọc tiêu đề
- 16. JSONKit phân tích cú pháp chuỗi json
- 17. Phân tích cú pháp một chuỗi XML trong MySQL
- 18. Chuỗi phân tích cú pháp thành một cấu trúc cây?
- 19. Phân tích cú pháp một tuple khỏi chuỗi?
- 20. Phân tích cú pháp một chuỗi C# LINQ expression
- 21. Cách phân tích cú pháp tệp CSV thành một mảng trong Android Studio
- 22. Phân tích cú pháp một tệp yaml
- 23. Phân tích cú pháp Ruby: phân tích cú pháp nhiều dòng
- 24. Phân tích cú pháp Rebol/RED. Lưu mã ASCII từ chuỗi được phân tích cú pháp thành biến?
- 25. Mục tiêu-C - Phân tích cú pháp CSV thành một mảng
- 26. Ocaml chuỗi phân tích cú pháp để làm cho cây
- 27. Chuỗi JavaScript phân tích cú pháp trong Java
- 28. Phân tích cú pháp mà không cần tách chuỗi
- 29. chuỗi phân tích cú pháp html với jquery
- 30. C++ chuỗi phân tích cú pháp (python style)
Tôi đoán nó sẽ thanh lịch hơn để sử dụng 'iter (s)' như một trình lặp chung thay vì '[s]' (chỉ định một danh sách). Nhưng bạn có +1 của tôi – RafaelC
Điều này có thể sẽ không hoạt động nếu chuỗi đã trích dẫn dòng dữ liệu bên trong các giá trị; @ alecxe của câu trả lời có ý nghĩa hơn – swooby