Làm cách nào để chèn ngắt dòng trong tệp CSV?

Bạn có thể gửi một số dữ liệu thực tế?

data temp;
infile 'c:\temp\have.csv' firstobs=2 length=len ;
input have $varying8000. len;
if missing[have] then delete;
if prxmatch['/^\d{1,},\d{4}/',have] then group+1;
run;
data temp2;
 do until[last.group];
  set temp;
  by group;
  length row $ 30000;
  row=cats[row,have];
 end;
keep group row;
run;
data want;
 set temp2;
n=scan[row,1,',','mq'];
recommendationid=scan[row,2,',','mq'];
language=scan[row,3,',','mq'];
review=scan[row,4,',','mq'];
run;

Tôi cho rằng bạn muốn giữ các dòng mới trong chuỗi vì lý do nào đó sau khi bạn đã tải các tệp csv từ đĩa. Ngoài ra, điều này được thực hiện lại trong Python. Giải pháp của tôi sẽ yêu cầu Python 3, mặc dù nguyên tắc này có thể được áp dụng cho Python 2

thủ thuật chính

Điều này là để thay thế các ký tự

 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
0 trước khi viết bằng một ký tự lạ mà nếu không sẽ không được đưa vào, sau đó hoán đổi ký tự lạ đó trở lại cho
 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
0 sau khi đọc lại tệp từ đĩa

Đối với nhân vật kỳ lạ của tôi, tôi sẽ sử dụng gai Iceland. Þ, nhưng bạn có thể chọn bất kỳ thứ gì không xuất hiện trong các biến văn bản của mình. Tên của nó, như được định nghĩa trong đặc tả Unicode chuẩn hóa là. LATIN CHỮ NHỎ THORN. Bạn có thể sử dụng nó trong Python 3 theo một số cách

    weird_literal = 'þ'
    weird_name = '\N{LATIN SMALL LETTER THORN}'
    weird_char = '\xfe'  # hex representation
    weird_literal == weird_name == weird_char  # True

 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
2 đó khá tuyệt [và hoạt động trong python 3. 6 chuỗi được định dạng bên trong nữa]. về cơ bản, nó cho phép bạn chuyển Tên của một ký tự, theo thông số kỹ thuật của Unicode

Một ký tự thay thế có thể phục vụ như một tiêu chuẩn tốt là

 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
3 [DẤU PHÂN VÔ HÌNH]

Thay thế
 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
0

Bây giờ chúng tôi sử dụng ký tự kỳ lạ này để thay thế cho

 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
5. Đây là hai cách xuất hiện trong đầu tôi để đạt được điều này

  1. sử dụng cách hiểu danh sách trên danh sách danh sách của bạn.

     new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
                  for sample in data]
    
    6

     new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
                  for sample in data]
    
  2. đưa dữ liệu vào một khung dữ liệu và sử dụng thay thế trên toàn bộ cột

     new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
                  for sample in data]
    
    7 trong một lần

     new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
                  for sample in data]
    
    1

Khung dữ liệu kết quả trông như thế này, với các dòng mới được thay thế

 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
2

Ghi kết quả vào đĩa

Bây giờ chúng tôi ghi một trong hai khung dữ liệu giống hệt nhau đó vào đĩa. Tôi đặt

 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
8 như bạn đã nói rằng bạn không muốn có số hàng trong CSV

Chào mọi người. Nhờ sự giúp đỡ tuyệt vời từ diễn đàn này, tôi đã tiến xa hơn nhiều trong dự án của mình trong thời gian ngắn hơn rất nhiều so với dự kiến. Tôi hiện đang cố gắng tìm ra phương pháp tốt nhất để nhập các bản ghi sẽ chiếm phần lớn trang web của tôi

Tôi đang sử dụng  mô-đun ImportPagesCSV và phần lớn mô-đun này đang thực hiện chính xác những gì tôi cần. Tôi chỉ gặp phải một số vấn đề.

Vấn đề chính là thiếu ngắt dòng cho trường nội dung. Tôi có thể làm cho các ngắt dòng xuất hiện nếu tôi mở. csv trong excel hoặc notepad, nhưng chúng dường như không tiếp tục khi trang được nhập. Có một cách cụ thể để định dạng. csv sẽ bị ngắt dòng để chuyển?

Một vấn đề khác là khi tôi xuất bản phần nội dung của trang trong mẫu của mình, nội dung của phần nội dung không có thẻ đoạn văn, điều này làm hỏng các kiểu. Nếu tôi vào bản ghi trang và chỉnh sửa trường nội dung theo cách thủ công [chỉ cần nhấp vào nút "nguồn" và sau đó lưu chẳng hạn], thì các thẻ đoạn sẽ xuất hiện, nhưng vì tôi muốn nhập khoảng 600 bản ghi nên tôi hy vọng sẽ không .  

Mọi thông tin chi tiết về cách khắc phục những sự cố này đều được đánh giá cao

 

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

MoritzMất

Đăng ngày 24 tháng 7 năm 2020

MoritzMất

  • Các thành viên
    • 354
    • 1,014
  • Vị tríCologne, Đức

    • Chia sẻ

Đăng ngày 24 tháng 7 năm 2020

Trong CSV, ngắt dòng được sử dụng để phân tách các hàng riêng lẻ, do đó, ngắt dòng bên trong một ô có thể gây ra sự cố. Tùy thuộc vào trình phân tích cú pháp CSV của bạn, nó có thể dẫn đến lỗi hoàn toàn, nó có thể âm thầm loại bỏ dòng mới hoặc nó có thể xử lý tốt. Theo như tôi biết thì fgetcsv có thể xử lý các dòng mới miễn là ô được trích dẫn đúng. Bạn có thể đăng một ví dụ về CSV của mình không?

Về các thẻ đoạn văn, vấn đề đó là kết quả của việc bỏ qua giao diện và nhập trực tiếp vào cơ sở dữ liệu. Trường vùng văn bản không quan tâm nếu nó chứa HTML hoặc văn bản thông thường với dấu ngắt dòng. Cấu trúc HTML được tạo bởi CK Editor trong quá trình chỉnh sửa, vì vậy nếu bạn không muốn chỉnh sửa tất cả các trang đã nhập theo cách thủ công, bạn sẽ phải chuyển đổi các trường nội dung của mình theo chương trình. Điều này liên quan đến việc chỉ sử dụng str_replace hoặc biểu thức chính quy để thay thế dòng mới bằng thẻ đoạn. Bạn có thể làm điều đó trước khi nhập [bằng cách sửa đổi CSV của bạn], trong khi nhập [rõ ràng là bạn có thể nối ImportPagesCSV. importPageValue] hoặc sau khi nhập [bằng cách sử dụng $pages->find để tìm tất cả các trang đã nhập, lặp qua chúng và thay đổi trường nội dung]. Đây là một mẫu mã nhanh và bẩn

 new_data = [[sample[0].replace['\n', weird_char] + weird_char, sample[1]]
              for sample in data]
4

You can get very sophisticated with that, like converting single line breaks into
tags instead and multiple linebreaks into

tags, but it depends on your requirements and source data.

  • 3

Liên kết để bình luậnChia sẻ trên các trang web khác

Nhiều tùy chọn chia sẻ hơn

nhà cái

Đăng ngày 24 tháng 7 năm 2020

nhà cái

  • Các thành viên
    • 13
    • 1

  • Tác giả

    • Chia sẻ

Đăng ngày 24 tháng 7 năm 2020

Tôi nghi ngờ rằng vấn đề thẻ đoạn là một cái gì đó như thế. Tôi không chắc rằng cà rốt có thể được mô-đun nhập phân tích cú pháp một cách an toàn nhưng nếu bao gồm các thẻ HTML trong chuỗi không phải là vấn đề thì tôi không quá khó để thêm chúng. Đây thực sự có thể là giải pháp cho vấn đề ngắt dòng cùng một lúc

CSV có thể ngắt dòng không?

Mỗi bản ghi nằm trên một dòng riêng biệt, được phân cách bằng dấu ngắt dòng [CRLF] .

Các dòng được phân tách như thế nào trong CSV?

Tệp giá trị được phân tách bằng dấu phẩy [CSV] là tệp văn bản được phân tách sử dụng dấu phẩy để phân tách các giá trị. Mỗi dòng của tệp là một bản ghi dữ liệu. Mỗi bản ghi bao gồm một hoặc nhiều trường, được phân tách bằng dấu phẩy. Việc sử dụng dấu phẩy làm dấu tách trường là nguồn gốc của tên cho định dạng tệp này.

Nguồn cấp dữ liệu trong tệp CSV là gì?

Tệp CSV chứa một tập hợp các bản ghi được phân tách bằng cặp dấu xuống dòng/nạp dòng [CR/LF] [\r\n] hoặc bởi một dấu xuống dòng [LF . Mỗi bản ghi chứa một tập hợp các trường được phân tách bằng dấu phẩy. Nếu trường chứa dấu phẩy hoặc CR/LF, dấu phẩy phải được thoát bằng dấu ngoặc kép làm dấu phân cách. . Each record contains a set of fields separated by a comma. If the field contains either a comma or a CR/LF, the comma must be escaped with double quotation marks as the delimiter.

Chủ Đề