【问题标题】:How to find and rename a duplicate string(s) in some data如何在某些数据中查找和重命名重复的字符串
【发布时间】:2020-08-18 01:56:03
【问题描述】:

我正试图将我的头包裹在 python 周围。基本上我正在尝试删除某些数据中的重复字符串(更准确的日期)。比如:

2019-03-31
2019-06-30
2019-09-30
2019-12-31 
2020-03-31
2020-03-31

通知 2020-03-31 重复。我想找到重复的日期并将其重命名为last quarter

相反,如果数据没有重复,我想保持原样。

我目前有一些工作代码可以检查是否有重复项。就是这样。我只需要一些关于如何重命名副本的正确方向的指导。

def checkForDuplicates(listOfElems):
if len(listOfElems) == len(set(listOfElems)):
    return 
else:
    return print("You have a duplicate")

【问题讨论】:

  • 到目前为止,您在重命名方面尝试过(研究过)什么;你被困在哪里了?功能建议:将你的'if'改为'if not'(或==改为!=),移动打印语句并删除elif。
  • 嘿,谢谢您的回复。我一直在看stackoverflow.com/questions/50828915/…stackoverflow.com/questions/24685012/…。无法真正解决这个问题。上面列出了我尝试的内容。到目前为止,如果它们是重复的,我所能做的就是返回一个打印语句。
  • 返回print 语句没有多大意义。它总是返回None,无论如何这是Python 中的默认返回,因此调用者没有任何用处。理想情况下返回一个布尔值(true 或 false),并让调用者根据需要打印。

标签: python-3.x


【解决方案1】:

使用set 跟踪您看到的项目。如果集合中已经有任何项目,请附加所需的字符串(如果要完整重命名,请使用 = "last quarter";不清楚)。

data = """2019-03-31
2019-06-30
2019-09-30
2019-12-31
2020-03-31
2020-03-31""".split("\n")

seen = set()

for i, e in enumerate(data):
    if e in seen:
        data[i] += " last quarter"

    seen.add(e)

print(data)

输出:

['2019-03-31', '2019-06-30', '2019-09-30', 
 '2019-12-31', '2020-03-31', '2020-03-31 last quarter']

【讨论】:

  • 嘿@ggorlen。感谢您的回复。请解释一下您添加 .split 的原因?
  • 没有特别的原因。您可以使用方括号初始化字符串列表。
【解决方案2】:

对于您的功能,如果您有元素列表,那么您的功能将是:

def checkForDuplicates(listOfElems):
    check=[]
    for i in range(len(listOfElems)):
       if listofElems[i] in check:
          #then it is a duplicate and you can rename it
          listofElems[i]='last quarter'
       else:
          check.append(listofElems[i])


这会将所有重复的条目替换为last quarter

【讨论】:

    【解决方案3】:

    如果你的列表是排序的,你可以试试这个。

    def checkForDuplicates(listOfElems):
        for i in range(len(listOfElems)-1):
            if listOfElems[i]==listOfElems[i+1]:
                listOfElems[i+1] = "last quarter"
        retrun listOfElems
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-14
      • 2020-03-14
      • 2013-01-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多