首页 > 解决方案 > Python:CSV导入后如何从列表中删除$字符

问题描述

我正在尝试将 CSV 文件导入 Python。导入 CSV 后,我想获取每个 ['Spent Past 6 Months'] 值,但是 CSV 包含在该值前面的“$”符号给我带来了问题。我已经尝试了很多方法来摆脱那个符号,但我现在真的迷路了!

我对 Python 真的很陌生,所以如果这里有一些非常简单的东西我遗漏了,我深表歉意。

下面列出了我编码的内容。我的输出首先列出:


      File "customer_regex2.py", line 24, in <module>
        top20Cust = top20P(data)
      File "customer_regex2.py", line 15, in top20P
        data1 += data1 + int(a[i]['Spent Past 6 Months'])
    ValueError: invalid literal for int() with base 10: '$2099.83'

错误截图


    import csv
    import re
    data = []

    with open('customerData.csv') as csvfile:
        reader = csv.DictReader(csvfile)
        for row in reader:
          data.append(row)

    def top20P(a):
      outputList=[]
      data1=0

      for i in range(0,len(a)):
        data1 += data1 + int(a[i]['Spent Past 6 Months'])
      top20val= int(data1*0.8)

      for j in range(0,len(a)):
        if data[j]['Spent Past 6 Months'] >= top20val:
          outputList.append('a[j]')

      return outputList

    top20Cust = top20P(data)
    print(outputList)

标签: pythonpython-3.xcsv

解决方案


它看起来像一个数据类型问题。

您可以像这样剥离 $ 字符:

someString = '$2099.83'
someString = someString.strip('$')
print(someString)
2099.83

现在最后一步是包装 float() 因为你有十进制值。

print(type(someString))
<class 'str'>

someFloat = float(someString)

print(type(someFloat))
<class 'float'>

希望有帮助。


推荐阅读