从.txt文件中混淆.csv中的数据

时间:2016-08-01 19:34:17

标签: python csv

我想根据要删除的不同.txt文件中要删除的数据列表来混淆.csv文件列中出现的单词。

理想情况下,我将能够忽略我的数据的情况,然后在.csv文件中,用In [1048]: %%timeit ...: with open('stack38704949.txt',"r") as f: ...: lines=f.readlines() ...: row_count = len(data) ...: np.genfromtxt('stack38704949.txt',skip_header=row_count-5,delimiter=',') 1000 loops, best of 3: 736 µs per loop 替换“要删除”文件中的匹配单词。我不确定在替换.csv文件中的单词同时忽略大小写的最佳方法是什么。到目前为止我没有工作,我愿意接受解决方案。

示例数据文件:

'*'

我的.txt文件将是要删除的数据列表:

This is a line of text in .csv column that I want to remove a word from or data such as 123 from. 

输出应为:

want
remove
123

我的代码:

This is a line of text in .csv column that I **** to ****** a word or data such as *** from.

1 个答案:

答案 0 :(得分:0)

我首先要构建一套检查词。我的输入基本上是换行符分隔单词的纯文本文件。如果您的文本文件不同,则可能需要单独解析。

其他想法:

创建单独的审查文件输出,而不是尝试覆盖输入文件。这样,如果你搞砸了算法,你就不会丢失数据。

您在第4列上执行.split(" "),只有在该列中有多个单词,空格分隔时才需要for w in csv_words。如果不是这种情况,您可以跳过import csv import re import string PUNCTUATION_SPLIT_REGEX = re.compile(r'[\s{}]+'.format(re.escape(string.punctuation))) # construct a set of words to censor censor_words = set() with open ('DataToRemove.txt', 'r') as removetxtfile: for l in removetxtfile: words = PUNCTUATION_SPLIT_REGEX.split(l) for w in words: censor_words.add(w.strip().lower()) with open('MyFileName.csv' , 'rb') as csvfile, open('CensoredFileName.csv', 'w') as f: reader = csv.reader(csvfile) # reader.next() for row in reader: csv_words = row[3].split(' ') #Gets the word for the 4th column in .csv file new_column = [] for w in csv_words: if w.lower() in censor_words: new_column.append('*'*len(w)) else: new_column.append(w) row[3] = ' '.join(new_column) f.write(' '.join(row) + '\n') 循环,循环遍历第4列中的所有单词。

data.table