嗨,我正在嘗試使用csv庫將我的 CSV 檔案轉換為新檔案。
我寫的代碼如下:
import csv
import re
file_read=r'C:\Users\Comarch\Desktop\Test.csv'
file_write=r'C:\Users\Comarch\Desktop\Test_new.csv'
def find_txt_in_parentheses(cell_txt):
pattern = r'\(. \)'
return set(re.findall(pattern, cell_txt))
with open(file_write, 'w', encoding='utf-8-sig') as file_w:
csv_writer = csv.writer(file_w, lineterminator="\n")
with open(file_read, 'r',encoding='utf-8-sig') as file_r:
csv_reader = csv.reader(file_r)
for row in csv_reader:
cell_txt = row[0]
txt_in_parentheses = find_txt_in_parentheses(cell_txt)
if len(txt_in_parentheses) == 1:
txt_in_parentheses = txt_in_parentheses.pop()
cell_txt_new = cell_txt.replace(' ' txt_in_parentheses,'')
cell_txt_new = txt_in_parentheses '\n' cell_txt_new
row[0] = cell_txt_new
csv_writer.writerow(row)
唯一的問題是在生成的檔案(Test_new.csv檔案)中,我有CRLF而不是LF. 這是一個示例影像:
- 讀取左側的檔案
- 在右側寫入檔案:

因此,當我將 csv 列復制到 Google docs Excel 檔案中時,每行后都有一個空行CRLF。

是否可以使用csv庫撰寫我的代碼,以便將LF其保留在單元格中而不是CRLF.
uj5u.com熱心網友回復:
從檔案csv.reader
如果
csvfile是檔案物件,則應使用newline=''1
[...]腳注
1(1,2) 如果
newline=''未指定,則嵌入在參考欄位中的換行符將不會被正確解釋,并且\r\n在寫入時使用換行符的平臺\r上將添加額外的內容。指定 應該始終是安全的newline='',因為 csv 模塊執行自己的(通用)換行處理。
這正是您所看到的問題。所以...
with open(file_read, 'r', encoding='utf-8-sig', newline='') as file_r, \
open(file_write, 'w', encoding='utf-8-sig', newline='') as file_w:
csv_reader = csv.reader(file_r, dialect='excel')
csv_writer = csv.writer(file_w, dialect='excel')
# ...
uj5u.com熱心網友回復:
你在 Windows 上,你用模式 'w' 打開檔案——它給你 Windows 風格的行尾。使用模式 'wb' 應該給你首選的行為。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/391116.html
下一篇:awk在csv中保存更改
