簡體   English   中英

使用正則表達式清洗電子表格

[英]Cleaning spreadsheet using regex

我想刪除以下每個條目中的所有統計信息:

#ChangeColumnFullTimeGraduatesEmployedAtGraduation:74.3%    #ChangeColumnAverageStartingSalaryAndBonus:$134,360 3.4 #ChangeColumnFullTimeGraduatesEmployedThreeMonthsAfterGraduation:81.4%  #ChangeColumnPeerAssessmentScoreOutOf5.:4.3
#ChangeColumnFullTimeGraduatesEmployedAtGraduation:82.0%    #ChangeColumnAverageStartingSalaryAndBonus:$127,368 3.29    #ChangeColumnFullTimeGraduatesEmployedThreeMonthsAfterGraduation:89.8%  #ChangeColumnPeerAssessmentScoreOutOf5.:4.1
#ChangeColumnFullTimeGraduatesEmployedAtGraduation:80.7%    #ChangeColumnAverageStartingSalaryAndBonus:$123,177 3.4 #ChangeColumnFullTimeGraduatesEmployedThreeMonthsAfterGraduation:92.5%  #ChangeColumnPeerAssessmentScoreOutOf5.:4.0

我一直在嘗試使用正則表達式(regex)。 基於所需的最終輸出由不超過一個數字百分號/ $號組成的事實,這就是我拼湊的內容:

import re
import csv

with(open('sheet.csv','rU')) as f:

    for row in f:
        re.sub([^0-9\$\%],'',row)

返回以下語法錯誤:

re.sub([^0-9\$\%],'',row)

正則表達式是從字符串中解析出來的,使用字符串作為re.sub的參數,即

>>> re.sub(r'[^0-9\$\%]','',row)

或者您可能想拆分:

>>> [c for c in re.split(r'[^0-9\$\%\.]',row) if c]
['74.3%', '$134', '360', '3.4', '81.4%', '5.', '4.3']

實際上,它仍然不正確,因為列標簽中有數字。 如果您的輸入看起來完全像您的示例,則類似的方法可能會更好:

re.split(r'#[^:]+:|[ ,]',row)
'74.3%', '$134', '360', '3.4', '81.4%', '4.3'

暫無
暫無

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

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