2

我有一个 .csv 文件,如下所示:

['NAME' " 'RA_I1'" " 'DEC_I1'" " 'Mean_I1'" " 'Median_I1'" " 'Mode_I1'" ...]"

这个字符串持续(我认为)95个条目,整个文件超过一千行深。我想删除所有字符:[ ' "并且只用一个空格条目(' ')分隔所有内容。
到目前为止,我已经尝试过:

import pandas as pd

df1 = pd.read_table('slap.txt')
    for char in df1:
        if char in " '[":
            df1.replace(char, '')

print df1

我只是在“测试”代码以查看它是否会执行我想要的操作,但事实并非如此。我想在整个文件上实现它,但我不确定如何。

我已经检查了这篇旧帖子,但并没有完全满足我的目的。我也玩过链接的帖子,唯一的问题似乎是所有条目都间隔两次而不是一次....

4

2 回答 2

2

这看起来像你应该能够在 sep 参数中使用(不是特别漂亮的)正则表达式来获取的东西read_csv

In [11]: pd.read_csv(file_name, sep='\[\'|\'\"\]|[ \'\"]*', header=None)
Out[11]:
    0     1      2       3        4          5        6   7
0 NaN  NAME  RA_I1  DEC_I1  Mean_I1  Median_I1  Mode_I1 NaN

您可以使用正则表达式,直到它真正满足您的需求。

为了解释这一点:

sep = ('\[\'  # each line startswith ['  (the | means or)
       '|\'\"\]'  # endswith '"] (at least the one I had)
       '|[ \'\"]+')  # this is the actual delimiter, the + means at least one, so it's a string of ", ' and space in any order.

你可以看到这个 hack 在两端都留下了一个 NaN 列。这很糟糕的主要原因是因为你的“csv”不一致,我肯定会建议清理它,当然,一种方法就是使用 pandas 然后to_csv. 如果它是由其他人生成的......请抱怨(!)。

于 2013-06-16T09:23:23.250 回答
-1

你有没有尝试过:

string.strip(s[, chars])

?

http://docs.python.org/2/library/string.html

于 2013-06-16T05:47:59.093 回答