Python中的DAT文件操作

Python中的DAT文件操作,python,python-3.x,Python,Python 3.x,我有一个分隔符分隔的dat文件,我正在寻找操纵。下面是它开始时的样子: 'Field1'|'Field2'|'Field3'|'Field4'|'Field5' 'George'|'June'|'11'|'1943'|'Yes' 'Steve'|'May'|'17'|'1905'|'' 'Jerry'|'March'|'01'|'1993'|'Yes' 字段5我将考虑成为我的“擦除”字段。因此,假设字段5的值为“是”,则擦除用户选择的所有其他字段。我基本上想让用户选择“擦除”字段,让用户选择“

我有一个分隔符分隔的dat文件,我正在寻找操纵。下面是它开始时的样子:

'Field1'|'Field2'|'Field3'|'Field4'|'Field5'
'George'|'June'|'11'|'1943'|'Yes'
'Steve'|'May'|'17'|'1905'|''
'Jerry'|'March'|'01'|'1993'|'Yes'

字段5我将考虑成为我的“擦除”字段。因此,假设字段5的值为“是”,则擦除用户选择的所有其他字段。我基本上想让用户选择“擦除”字段,让用户选择“要擦除”字段,然后它将导出一个新的DAT文件

例如,用户说擦拭字段=字段5 “待擦除”字段为字段2和字段3 完成后,脚本还应完全删除擦除字段

输出应如下所示:

'Field1'|'Field2'|'Field3'|'Field4'
'George'|''|''|'1943'
'Steve'|'May'|'17'|'1905'
'Jerry'|''|''|'1993'
我一直在使用csv模块,但我遇到了困难。如有任何意见,将不胜感激

谢谢

输出:

In[3]: with open('test.dat', 'r') as f:
  ...:     print(f.read())
  ...: 
'Field1'|'Field2'|'Field3'|'Field4'|'Field5'
'George'|'June'|'11'|'1943'|'Yes'
'Steve'|'May'|'17'|'1905'|''
'Jerry'|'March'|'01'|'1993'|'Yes'

In[4]: solution(
  ...:     infile='test.dat',
  ...:     outfile='output.dat',
  ...:     wiping_field='Field5',
  ...:     fields_to_wipe=('Field2', 'Field3')
  ...: )
In[5]: with open('output.dat', 'r') as f:
  ...:     print(f.read())
  ...: 
'Field1'|'Field2'|'Field3'|'Field4'
'George'|''|''|'1943'
'Steve'|'May'|'17'|'1905'
'Jerry'|''|''|'1993'

我建议您使用
pandas
这真的是dat文件中的数据结构还是显示表的尝试?用户应该如何“选择”任何字段,到目前为止,您的代码是什么样子的?请发布文件前几行和代码的1:1示例,这会产生您的问题。非常感谢!这真的很有帮助。你介意我看一下然后再打给你吗?抱歉,我对编程非常陌生,但它给了我一个错误:“_csv.reader”对象没有属性“fieldnames”@Tom我使用Python 3.6.5编写/测试了脚本(输出如答案所示)。我的第一个猜测是您将脚本从
csv.DictReader
修改为
csv.reader
。如果您没有修改脚本,我需要更多关于您使用的输入文件以及您传递给导致此错误的函数的参数的信息。
In[3]: with open('test.dat', 'r') as f:
  ...:     print(f.read())
  ...: 
'Field1'|'Field2'|'Field3'|'Field4'|'Field5'
'George'|'June'|'11'|'1943'|'Yes'
'Steve'|'May'|'17'|'1905'|''
'Jerry'|'March'|'01'|'1993'|'Yes'

In[4]: solution(
  ...:     infile='test.dat',
  ...:     outfile='output.dat',
  ...:     wiping_field='Field5',
  ...:     fields_to_wipe=('Field2', 'Field3')
  ...: )
In[5]: with open('output.dat', 'r') as f:
  ...:     print(f.read())
  ...: 
'Field1'|'Field2'|'Field3'|'Field4'
'George'|''|''|'1943'
'Steve'|'May'|'17'|'1905'
'Jerry'|''|''|'1993'