簡體   English   中英

我正在學習 Python 並想從 CSV 文件中刪除數據

[英]I'm learning Python and want to remove data from a CSV file

我要更改的 CSV 文件有 2 列

Part Number.    Qty
h36fsde (1)      6
gr3jgr  (1)      2
qmdd12  (2)      9

它基本上是第一列中的零件號列表,然后是第二列中的數量。 我需要像上面 (1) (1) (2) 那樣刪除第一列中的(括號中的數字),因為這與頁碼有關,並且在我嘗試導入它時會導致問題。

理想情況下,我的清單應該是:

Part Number.    Qty
h36fsde          6
gr3jgr           2
qmdd12           9

到目前為止,我擁有的代碼允許我選擇我希望使用 Tkinter 更改的文件,然后我嘗試將“(1)”替換為“”,然后創建一個新目錄(如果它不存在),稱為 quotations 並寫入csv 到該目錄。 到目前為止,它可以正常加載文件並將文件 new5.csv 寫入 quotations 文件夾,但是它不會將“(1)”替換為“”所以有人可以讓我知道我做錯了什么嗎? 我要么需要簡單地一起刪除括號中的數字,要么用“”替換它們

請在下面查看我的代碼。 我將嘗試使用 def 函數來整理它,但是我想先讓它運行,然后再看看如何改進它並使其更加模塊化。

import tkinter as tk
from tkinter.filedialog import askopenfilename
import pandas as pd
import os  
from pathlib import Path  

root = tk.Tk()
root.withdraw() #Prevents the Tkinter window to come up
csvpath = askopenfilename()
root.destroy()

df = pd.read_csv(csvpath)
df.replace('(1)', ' ', inplace=True)

filepath = Path('quotations/new5.csv')  
filepath.parent.mkdir(parents=True, exist_ok=True)  
df.to_csv(filepath)  

一旦我開始工作,我需要將其設置為從 (1) 到 (20) 中刪除(括號中的數字)。 另外,有沒有一種簡單的方法可以讓我將編輯后的文件直接寫回到打開的文件的頂部,而不是將編輯后的文件保存為“New5.csv”,然后在資源管理器中重命名?

df.replace查找並替換整個單元格,而不是其中的文本,除非要查找的字符串作為正則表達式給出:

df.replace(r" \(1\)", "", regex=True, inplace=True)

或者,改用Series.str.replace

df["Part Number."] = df["Part Number."].str.replace('(1)', '')

要替換一個 go 中所有括號中的數字,請使用更通用的正則表達式:

df["Part Number."] = df["Part Number."].str.replace(r" \(\d\d?\)", '', regex=True)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM