为了从csv文件中删除特定行,我想在行中添加ID值。当然,有几种方法可以完成,我很欣赏有关生成ID的可能方法的一些输入。简单而短暂但优秀的方式是首选。
例如,使用random.randint(00000, 99999)
可能是随机大号?但需要检查可能的重复会让我觉得有更好的解决方案。
另一种方法是读取csv 文件将1
添加到每行的某个变量中。也许您甚至需要找出一种方法来检查给定的行是否包含实际的csv内容,而不仅仅是\n
的结果。我试过这个并取得了成功,但代码真的很长很难看。
我敢打赌,有更好的方法让我无法想到。我可以在下面找到它。它适用于我的特定行mangemant和添加新行的方式。这就是我在这一点上所习惯的。
我正在寻找Python 3+的解决方案,如果目前还不明显的话。
import os
def ID(filename):
if os.path.isfile(filename):
if os.path.getsize() == 0:
return 1
else:
ID = 1
[ID += 1 for line in open(filename, "r")]
return ID
else:
return 1
答案 0 :(得分:0)
使用v4 UUID
import uuid
ID = uuid.uuid4().hex
它是随机的,并且保证在大多数实际应用中都是独一无二的。
答案 1 :(得分:0)
计算行不是一个好主意,因为如果从文件中间删除一行然后尝试查找新ID,则最终可能会复制以前使用的ID。
如果保持文件按ID排序,则只需将1添加到最后一行的ID即可。
或者,您可以使用uuid
随机生成标识符,而不必担心会发生冲突。
答案 2 :(得分:0)
用这样的东西生成唯一的N位随机数是相当容易的:
import random
_seen = set()
def uniqueID(length):
while True:
v = int(''.join(str(random.randint(0, 9)) for _ in range(length)))
if v not in _seen:
_seen.add(v)
return v
for _ in range(10):
print(uniqueID(16))