【问题标题】:Python: How to remove $ character from list after CSV importPython:CSV导入后如何从列表中删除$字符
【发布时间】:2020-02-17 23:08:42
【问题描述】:

我正在尝试将 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'

error screenshot


    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)

【问题讨论】:

标签: python python-3.x csv


【解决方案1】:

看起来像是数据类型问题。

你可以像这样去掉 $ 字符:

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

现在最后一步是包含在 float() 中,因为您有十进制值。

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

someFloat = float(someString)

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

希望对您有所帮助。

【讨论】:

  • 我之前曾尝试使用 .strip(),但收到一个错误,因为该值只是列表中众多值之一。如果我没记错的话,我收到的具体错误是“列表”类型不包含属性 .strip()。我还发现了如何使用 .remove() 从列表中删除项目,但不知道如何从列表中的项目中仅删除项目的一部分。
  • 您是否设法让.strip('$') 按照上述示例工作?如果不是,请提供您的数据的最小示例。您可以使用正则表达式仅过滤数字
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-08
  • 2012-07-23
相关资源
最近更新 更多