【问题标题】:Python return value without inverted commas没有引号的 Python 返回值
【发布时间】:2017-10-24 21:27:59
【问题描述】:

我有 csv 文件:

shack_imei.csv:

shack, imei
F10, "5555"

代码:

reader = csv.reader(open("shack_imei.csv", "rb"))
my_dict = dict(reader)


shack = raw_input('Enter Shack:')
print shack
def get_imei_from_entered_shack(shack):
    for key, value in my_dict.iteritems():
        if key == shack:
            return value

list = str(get_imei_from_entered_shack(shack))
print list

这给了我"5555" 但我需要这样的列表结构中的这个值:

["5555"]

我尝试了很多不同的方法,最终都得到了额外的'""

编辑 1: 新的更简单的代码:

reader = csv.reader(open("shack_imei.csv", "rb"))
my_dict = dict(reader)
shack = raw_input('Enter Shack:')
imei = my_dict[shack]
print imei

“5555”

list(imei) 给我['"5555"'],我需要它是["5555"]

【问题讨论】:

  • dict 中访问某个keyvalue,使用my_dict[key] - 无需单独的方法迭代字典中的每个项目。另外,不要为变量使用像 list 这样的名称,因为这会影响内置函数。
  • your_list = [str(get_imei_from_entered_shack(shack))] 如果您希望您的字符串作为列表的元素

标签: python python-2.7 list csv


【解决方案1】:

你可以改变你的“return”语句:

shack = raw_input('Enter Shack:')
print shack
def get_imei_from_entered_shack(shack):
    for key, value in my_dict.iteritems():
        if key == shack:
            return [str(value)]

list = get_imei_from_entered_shack(shack)
print list

【讨论】:

  • 请不要使用list作为变量名,它会影响内置的list
  • 请注意 csv.reader 根本不进行任何类型的转换 - 所以 str(value) 可以只是 value
  • 建议:不要命名变量list
  • 这仍然给我[' "555" '],当我需要["5555"]
  • 与原始问题的评论相同:dict access via my_dict[key]
【解决方案2】:

据我了解,您想创建一个包含返回字符串的列表,您可以使用 [ ]

list = [str(get_imei_from_entered_shack(shack))]

【讨论】:

    【解决方案3】:

    这段代码有一些问题,在 cmets 中太长了,无法解决

    my_dict

    my_dict = dict(reader) 仅在此 csv 是键和值的集合时才能正常工作。如果有重复的键,这可能会带来一些问题

    get_imei_from_entered_shack

    为什么要使用这种特殊方法,而不是仅仅询问my_dict 正确的值。即使您不希望它在请求不存在的shack 时抛出Exception,也可以使用dict.get(<key>, <default>) 方法

    my_dict(shack, None)
    

    和你的 4-line 方法一样

    列表

    不要将变量命名为与builtins 相同的名称

    列表2

    如果你想要一个列表,你可以使用[<value>]list(<value>)(除非你用自己的变量赋值替换了list

    【讨论】:

      【解决方案4】:
      reader = csv.reader(open("shack_imei.csv", "rb"))
      my_dict = dict(reader)
      shack = raw_input('Enter Shack:')
      imei = my_dict[shack]
      imei = imei.replace('"',"")
      
      IMEI_LIST =[]
      IMEI_LIST.append(imei)
      print IMEI_LIST
      ['5555']
      

      【讨论】:

        猜你喜欢
        • 2017-01-27
        • 1970-01-01
        • 2021-06-25
        • 1970-01-01
        • 2015-08-19
        • 1970-01-01
        • 1970-01-01
        • 2016-01-29
        • 1970-01-01
        相关资源
        最近更新 更多