我有一个csv文件,我想用python panda读取它。标题和行如下所示:
A ^B^C^D^E ^F ^G ^H^I^J^K^L^M^N
很明显,分隔符是^,有时有一些奇怪的空格。我怎样才能把这个文件读得很好?
我正在使用以下命令读取csv文件:
df = pd.read_csv('input.csv', sep='^')
你不能提供regex作为分隔符吗?
sep = re.compile(r'[\^\s]+')
使用regex\s*\^这意味着0个或多个空格和^,您必须在此处指定python引擎以避免出现有关regex支持的警告:
In [152]:
t="""A ^B^C^D^E ^F ^G ^H^I^J^K^L^M^N"""
df= pd.read_csv(io.StringIO(t), sep='\s*\^', engine='python')
df.columns
Out[152]:
Index(['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N'], dtype='object')
分隔符可以是正则表达式,因此请尝试以下操作:
df = pd.read_csv('input.csv', sep="[ ^]+")
正则表达式应在一行中使用任意数量的空格或插入符号(^)作为单个分隔符。