python - 从(.csv 或 .txt)文件 Python 中删除各种字符

标签 python pandas

我有一个 .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

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

我检查了 this old post出来,但不太适合我的目的。我也玩过链接的 post ,唯一的问题似乎是所有条目都间隔两次而不是一次....

最佳答案

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

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。如果它是由其他人生成的...投诉 (!)。

关于python - 从(.csv 或 .txt)文件 Python 中删除各种字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17130541/

相关文章:

python - 获取命令的退出代码

python - 如何使 Python 命令提示符不可点击?

python - 使用新数据框更新 Pandas 数据框

python - 使用某些图像标记图像中断的 Altair 可视化

python - 迭代数据帧时引用上一行

Python将参数传递给查询错误

python - 在两个值之间缩放/变换/标准化 NumPy 数组

python - 为什么需要 __declspec(dllexport) 才能从 ctypes 访问某些函数?

python - 在 Pandas 中创建层次结构列

python - 使用空字符串或 A 列中的值(具体取决于 B 列上的值)在 pandas 数据框中添加新列