Python 删除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

如果某个字段与其他字段部分匹配,我想删除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   
在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
    单词进行比较。循环遍历数据,但首先按图书名称对其进行排序,然后将以前的图书名称与当前图书名称进行比较。