我在 S3 中的 csv 檔案看起來像這樣。我想從每個單元格中洗掉所有雙引號。
f_name , l_name, add, phone
"JOE", "DON", """, "1234"
"JOE", "DON", """, "1234"
"SID", "SIR", "", "456"
"SID", "ABC", "A", "456"
我已經從 Pandas 中閱讀了這個 csv
body = object.get()['Body'].read()
reader = pd.read_csv(io.BytesIO(body), delimiter=',', quotechar='"',encoding='utf8', quoting=csv.QUOTE_ALL, skipinitialspace=True)
但是有 3 個 """ 的行導致了問題,我無法清除/決議它。你能幫幫我嗎。
圖片
uj5u.com熱心網友回復:
作為一種非常基本的方法(依賴于熊貓),您可以在不提供參考選項的情況下讀取資料,這將確保"您的資料中包含字符。然后可以通過.replace()在每個單元格項上應用該方法來洗掉這些字符.applymap():
import io
import pandas as pd
data_string = '''
f_name , l_name, add, phone
"JOE", "DON", """, "1234"
"JOE", "DON", """, "1234"
"SID", "SIR", "", "456"
"SID", "ABC", "A", "456"
'''
print(data_string)
df = pd.read_csv(io.StringIO(data_string), delimiter=',')
print(df)
cleaned = df.applymap(lambda x: x.replace('"', ''))
print(cleaned)
給出最終輸出:
f_name l_name add phone
0 JOE DON 1234
1 JOE DON 1234
2 SID SIR 456
3 SID ABC A 456
uj5u.com熱心網友回復:
如果你想在讀入資料幀之前將三重“變成雙”,你可以使用正則運算式子。
import re
body = object.get()['Body'].read()
body = re.sub(b'"""', b'""', body)
請注意,搜索和替換字符也是位元組,因為型別body是位元組。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/371033.html
標籤:Python 蟒蛇-3.x 熊猫 亚马逊网络服务 boto3
