![](/img/trans.png)
[英]My data has comma in the value of the column which is also a delimiter, how to read it by csv.reader in python
[英]How to read csv file which has column delimiter as well record delimiter
我的CSV文件有3列:名稱,年齡和性別,樣本數據為:
AlexÇ39ÇM #Ç#SheebaÇ35ÇF #Ç#RiyaÇ10ÇF
列定界符為“Ç”,記錄定界符為“#Ç#”。 請注意,第一個記錄沒有記錄定界符(#Ç#),但是所有其他記錄都有記錄定界符(#Ç#)。 您能否告訴我如何讀取此文件並將其存儲在數據框中?
csv
和pandas
模塊都支持直接讀取csv文件。 但是,由於在進一步處理之前需要逐行修改文件內容,因此建議逐行讀取文件,根據需要修改每一行,並將處理后的數據存儲在列表中以進行進一步處理。
必要步驟包括:
readlines()
時是行的一部分readlines()
由於.split()
返回字符串元素的列表,因此我們獲得了列表的總體列表,其中每個“子列表”都包含/表示行/記錄的數據。 可以通過pandas.DataFrame.from_records()
讀取這樣格式化的數據,這在當時很方便:
import pandas as pd
with open('myData.csv') as file:
# `.strip()` removes newline character from each line
# `.replace('#;#', '')` removes '#;#' from each line
# `.split(';')` splits at given string and returns a list with the string elements
lines = [line.strip().replace('#;#', '').split(';') for line in file.readlines()]
df = pd.DataFrame.from_records(lines, columns=['Name', 'Age', 'Sex'])
print(df)
備注:
我將Ç
更改為;
由於編碼問題,對我來說效果更好。 但是,該算法的基本思想仍然相同。
像這樣手動讀取數據可能會占用大量資源,這在處理較大文件時可能會出現問題。 可能還有更優雅的方式,我不知道。 如果遇到性能問題,請嘗試分塊讀取文件或尋求更有效的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.