我有一个100,000行的CSV文件。
A列中的每一行都是一个由字符和整数组成的句子。
我希望B列仅包含整数。
我希望新列位于同一CSV文件中。
我该怎么做?
答案 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,则会使某些事情搞砸。不过,这可能是更清晰的方法之一。