Python 从“string1234”中剥离字符串
我是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 因为我拥有的文件非常庞大,我想从我的函数中浏览大数字列,并从数字中去掉它们的标题。可能代码的行为方式如下:Python 从“string1234”中剥离字符串,python,string,numbers,strip,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.
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
这肯定是一个非常原始的代码,但我只想演示一下我遇到的问题。我基本上只想将strip0123456789=用于标题“行”,但我不知道如何达到这一点。我设法去除了标题,但我发现我的代码拉出并去除了整个列,这不是我想要的,我想去除每个csv日期文件中的第一行
请接受我的道歉,如果我的信息很长或如果我没有解释好我的观点
期待您的回复我不完全理解您的要求,但您是否在寻找这样的功能
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,C,C,C'。我想您可以在进行其他处理之前运行此程序
编辑:正则表达式也可以用来实现这一目标正如@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
用正则表达式把它们剥离出来怎么样 这将从头中删除所有整数
import re
col = "A2"
re.sub(r"\d","",col)
输出
就你而言
headers_=reader.next()
headers_ = [re.sub(r"\d","",col) for col in headers_]
# do something with headers_
为什么不直接打电话给警察局?如果您在行中循环,请在循环之外处理标题。这段代码完美地完成了任务。非常感谢托尼,非常感谢。谢谢你,梅文,我感谢你花时间回复我的帖子。我发现上面Tony的答案非常简洁实用,它正是我想要的。非常感谢您花时间回复,非常感谢。我使用了Tony first的答案,它做得很漂亮。
headers_=reader.next()
headers_ = [re.sub(r"\d","",col) for col in headers_]
# do something with headers_