我有一個如下所示的 csv 檔案:
CCC1=NNC(CC)=C1CC(=O)N[C@H]1C[C@@](C)(O)C1 Z3670357625 M
COC(=O)C1(CNC(=O)NCC2CC2(C)C)CCCC1 Z1366118392 M
CC1(C)CN(CCF)CCN1S(=O)(=O)C1=CNC=N1 Z3847735140 S
CC1=CC(N2CCC(C#N)(C3CCC3)CC2)=NC=C1C#N Z4174841496 M
CN(CC1=NN=C2C=CC=CN12)C(=O)C1=CC=CC=C1Br Z979185880 S
CC1=CC(C(NCC(C)N(C)C2CC2)C2CC2)=CC=C1F Z1586839055 S
CN1N=NC2=CC(CSCC3=CC=C(Br)C=C3)=CC=C21 Z1449657345 S
CCC(C)(C)C(=O)N(C)C1=CC=CC(F)=C1OC Z4888674994 S
CCC(NC1CC2CCCCN2C1=O)C1=NOC(C)=C1 Z4196015222 M
COCC1(CO)CCN(CC2=CC=CC(C(=O)O)=C2Cl)C1 Z4251400790 M
O=C(C[C@H]1CCNC1)N1CCC(OC2=CC=C(Cl)C=C2)C1 Z4062618130 S
O=C(C[C@@H]1CCNC1)N1CCC(OC2=CC=C(Cl)C=C2)C1 Z4062618465 S
CC1(C)CN(C2CCN(C(=O)OC3COC3)C2)C1 Z4000118072 M
CCC(CC)C(C)C(=O)OCC1=CC(=O)NC=C1 Z2861190319 S
COC1=CC(Br)=C(CN[C@@H]2C[C@@H]3C[C@H](O)[C@H]2C3)C=C1OC |&1:9,13,&2:11,15| Z3808914614 S
最后一行包含 內的字符||,這使它有四列,而不是其他行的三列。我如何洗掉只是|&1:9,13,&2:11,15|?我看到了這篇文章:Deleting part of a string pandas DataFrame但我只需要洗掉這個選擇,而不是從這一點開始的整行。我覺得這比試圖在整個 csv 中保留我需要的三列更容易,但對其他想法持開放態度。我需要對一個非常大的檔案中的多行執行此操作。謝謝!
uj5u.com熱心網友回復:
一種更快的方法是python完全跳過。從您的終端:
sed 's/|&1:9,13,&2:11,15|//g' path_to_csv > path_to_modified_csv
這將專門洗掉不需要的部分,例如(最后一行):
COC1=CC(Br)=C(CN[C@@H]2C[C@@H]3C[C@H](O)[C@H]2C3)C=C1OC Z3808914614 S
uj5u.com熱心網友回復:
假設您的內容位于名為 csvfile.csv 的 csv 檔案中,請嘗試以下操作:
- 替換有問題的字串的代碼
#read input file
fin = open("csvfile.csv", "rt")
#read file contents to string
data = fin.read()
#replace all occurrences of the required string
data = data.replace('|&1:9,13,&2:11,15|', '')
#close the input file
fin.close()
#open the input file in write mode
fin = open("csvfile.csv", "wt")
#overrite the input file with the resulting data
fin.write(data)
#close the file
fin.close()
在此之后你應該能夠做到:
- 簡單讀取 csv 的代碼
import pandas as pd
df = pd.read_csv("csvfile.csv")
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/417021.html
標籤:
