从CSV读取数据并将数据写入CSV-字符串转换为整数

时间:2019-03-11 16:12:39

标签: python python-3.x

我有一个100,000行的CSV文件。

A列中的每一行都是一个由字符和整数组成的句子。

我希望B列仅包含整数。

我希望新列位于同一CSV文件中。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

如果我正确理解了您的问题,我将使用.isdigit()来解析A列中的数据。坦率地说,我不确定A列的格式是什么,所以我不知道到底是什么格式您可以这样做(如果您提供更多信息,我可以给出更具体的答案)。您的解决方案可能会 与此类似:

def find(lines):
  B = []
  for line in lines:
    numbers = [c for c in line if c.isdigit()]
    current = int(''.join(numbers))
    # current is the concatenation of all 
    # integers found in column A from left to right
    B.append(current) 
  return B

让我知道这是否有意义,甚至在您解决方案的正确轨道上。再一次,在不知道您要做什么以及A看起来如何的情况下,我不确定您的实际目标是什么。

编辑

我不会为您解释csv的内容,主要是因为python here中包含了一个很棒的资源和库。如果您有与撰写csv有关的特定问题,请务必发布。

听起来您本质上是想将int值从A列中取出,然后将它们添加到新的B列中。肯定有很多方法可以解决此问题,但是问题的一般形式是针对要过滤的每一行out int,然后将过滤后的int添加到新列中。我将列出几个:

  • Regex:您可以使用诸如[0-9]+之类的模式将字符串从A中拉出,然后使用int(无论输出结果是什么)转换为int,然后将这些值存储在B中。我是一个很好的正则表达式的吸引者,而这很简单。 here是学习和测试您的模式的好资源。

  • 使用与上面类似的算法:上面的算法以前工作过,但是我对其进行了稍微的更新。现在,它已更新,它将从左到右返回一个与A中的数字相对应的数字数组。这是比较合理的方法,但不一定要保证您使用正确的整数,因为如果标题中包含int,则会使某些事情搞砸。不过,这可能是更清晰的方法之一。