Python 删除CSV中的行(如果一个字段与另一个字段部分匹配)
如果某个字段与其他字段部分匹配,我想删除CSV文件中的一行 例如:Python 删除CSV中的行(如果一个字段与另一个字段部分匹配),python,csv,Python,Csv,如果某个字段与其他字段部分匹配,我想删除CSV文件中的一行 例如: serial book name author 1. Ramakrishna Kathamrita Vol1 Sri M 2. Ramakrishna Kathamrita Vol2 Sri M 3. Ramakrishna Kathamrita Vol3 Sri M
serial book name author
1. Ramakrishna Kathamrita Vol1 Sri M
2. Ramakrishna Kathamrita Vol2 Sri M
3. Ramakrishna Kathamrita Vol3 Sri M
对于这三个,我只想有一个条目。它应该只返回:
serial book name author
1. Ramakrishna Kathamrita Vol1 Sri M
在Python中有什么方法可以做到这一点吗
编辑:
(29-12-2017 17:05)
对不起,我不清楚
我们可以设定以下标准
n
个单词,则至少第一个n-1
个单词应该匹配1.
,它将在询问用户时删除该行my_string1 = "Ramakrishna Kathamrita Vol1"
my_string2 = "Ramakrishna Kathamrita Vol2"
splitted1 = my_string1.split()
splitted2 = my_string2.split()
if(splitted1[0] = splitted2[0] & splitted1[1] = splitted2[1])
then ask the user whether to delete the row;wait for 'y/n'
我们还可以得到字数:
def word_count(string):
tokens = string.split()
n_tokens = len(tokens)
return n_tokens
现在我们如何实现它1)对于CSV2)请求时删除行
如果某个字段与其他字段部分匹配
可以使用字符串距离算法。模块可能很有用,但您需要定义什么是您的
相似性
标准。什么是“部分匹配”的标准?一旦您可以定义,您就可以使用字典(或collections.defaultdict
)或使用itertools.groupby()
.Edited)对CSV行进行分组并根据需要组合它们。希望问题现在清楚了。编辑问题。我在寻找一些不同的东西。然后你很接近了,使用split()
来计算单词,正则表达式也可以。使用word1.rsplit(无,1)[0]==word2.rsplit(无,1)[0]
通过n-1
单词进行比较。循环遍历数据,但首先按图书名称对其进行排序,然后将以前的图书名称与当前图书名称进行比较。