我有一个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='^')
答案 0 :(得分:8)
使用正则表达式\s*\^
表示0或更多空格和^,你必须在这里指定python引擎以避免有关正则表达式支持的警告:
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')
答案 1 :(得分:4)
你不能作为分隔符提供正则表达式吗?
sep = re.compile(r'[\^\s]+')
答案 2 :(得分:2)
您的分隔符可以是正则表达式,因此请尝试以下方法:
df = pd.read_csv('input.csv', sep="[ ^]+")
正则表达式应该在一行中使用任意数量的空格或插入符号(^)作为单个分隔符。
答案 3 :(得分:0)
按照您的方式读取文件,然后为每个字符串删除额外的空格:
df = (pd.read_csv('input.csv', sep="^")
.apply(lambda x: x.str.strip() if isinstance(x, str) else x))
答案 4 :(得分:0)
如果文件中唯一的空格是列之间的额外空格(即没有列具有带空格的原始文本),则可以轻松修复文件中的所有空格。执行此操作的示例命令是:
<input.csv tr -d '[[:blank:]]' > new_input.txt