从" string1234"中剥离字符串

时间:2014-08-16 01:06:27

标签: python string numbers strip

我是python的新手,我想在我的数据挖掘研究中使用这种美妙的语言。 我现在掌握了一个大数据文件,不幸的是样本身份被定义为附加到数字的字符串,如下所示:

A,B1,B2,B3,C1,C2,C3
0.2,0.456,0.7,1.01,0.91,0.11,0.31

为了让我构建一个有用的分类器,我需要从字母中删除数字,这样我就可以设置一个目标,即

设置(['A','B','C'])

我首先要做的是创建一个带有剥离标题的输出,这样新的csv文件应该是:

A,B,B,B,C,C,C
0.2,0.456,0.7,1.01,0.91,0.11,0.31

因为我拥有的文件相当庞大,所以我希望从我的函数中浏览大数列并从数字中删除它们的标题。可能代码就像:

import numpy as np
import pandas as pnda
#from sklearn.linear_model import Ridge, Lasso
import string
import csv
import os

# Please don't pay attention to the first part of the code, it is just to load the file 

def get_file_path(filename):
    drkt = os.getcwd()
    file_path = os.path.join(drkt,filename)

    return file_path
    file_path = get_file_path('testing.csv')


def read_csv(file_path):
    data_file = open(file_path, 'rU')
    reader = csv.reader(data_file)
    headers_=reader.next()
print headers_ # Just to see the lines

这肯定是一个非常原始的代码,但我只是想证明我遇到的问题。我基本上只想使用“strip(”0123456789 =,“)”作为标题'行',但我不知道如何达到这一点。我设法剥离标题,但我发现我的代码拉出并剥离整个列,这不是我想要的,我想剥去每个csv日期文件中的第一行。

如果我的信息很长或者我没有很好地解释我的观点,请接受我的道歉。

期待收到你的支持

3 个答案:

答案 0 :(得分:1)

正如@whereswalden建议的那样,你几乎就在那里

import csv

def read_csv(file_path):
    data_file = open(file_path, 'rU')
    reader = csv.reader(data_file)
    headers_=reader.next()
    print headers_ # ['A', ' B1', ' B2', ' B3', ' C1', ' C2', ' C3']

    # Process headers outside of loop
    headers_ = [col.strip("0123456789=,") for col in headers_]
    print headers_ # ['A', ' B', ' B', ' B', ' C', ' C', ' C']

    for row in reader:
        # do what you want with the data rows

答案 1 :(得分:0)

如何使用正则表达式将它们删除?

这个将删除标题中的所有整数。

import re
col = "A2"

re.sub(r"\d","",col)

<强> 输出

A

在你的情况下

headers_=reader.next()
headers_ = [re.sub(r"\d","",col) for col in headers_]
# do something with headers_

答案 2 :(得分:-1)

我不完全明白你在问什么,但你在寻找这样的功能吗?

 def remove_numbers(l):
     #Create string to use for output
     output = "";
     #loop through the input string
     for x in l:
        #Test to see what characters are NOT digits
         if not x.isdigit():
            #If it isn't a digit add it to the output string
            output += x
    #Return the output string
    return output

此函数将字符串作为输入并删除数字字符。运行此输入A, B1, B2, B3, C1, C2, C3即可获得此输出'A, B, B, B, C, C, C'。我想你可以在进行其他处理之前运行它。

编辑:正则表达式也可用于实现此目标