【问题标题】:Storing Data in the correct way in Python在 Python 中以正确的方式存储数据
【发布时间】:2018-04-28 01:11:39
【问题描述】:

在 Keywords.txt 我有这些词和它们的“值”:

alone,1

amazed,10

amazing,10

bad,1

best,10

better,7

excellent,10

这些是我需要存储在数据结构(列表)中的一些关键字及其“值”。每行稍后将用于访问/提取单词及其“值”。

我在 while 循环中列出的列表是:

line = KeywordFile.readline()

while line != '':

   line=KeywordFile.readline()
   line = line.rstrip()

我尝试通过这样做将其转换为列表形式:

   list=[line]

但是,当我打印列表时,我得到了这个:

['amazed,10']
['amazing,10']
['bad,1']
['best,10']
['better,7']
['excellent,10']

我认为如果列表包含在引号内,我将无法轻松地从列表中提取我的“值”。

我正在寻找这种格式的列表:

['amazed',10]
['amazing',10]
['bad',1]

提前致谢!

【问题讨论】:

  • 试试csv模块
  • line.split(',') 将用逗号分割行。 dict 将是存储数据的好东西。它自然属于键值范式。如果您正在创建文件(而不是从其他地方获取),您可以将值存储在 pickle 文件中,这样打开/关闭会更容易。
  • 您必须使用列表还是可以使用字典,其中单词(如果没有重复项)是键,值是数字?

标签: python string list data-structures while-loop


【解决方案1】:

您希望根据字符串分隔符',' 将行拆分为列表。

list = line.split(',')

然后你想将每个列表中的第二个值转换为一个 int。

list[1] = int(list[1])

【讨论】:

    【解决方案2】:

    将行amazed,10 放入sample.csv

        import csv
    
        with open('sample.csv') as csvfile:
            inputs = csv.reader(csvfile, delimiter=',')
            for row in inputs:
                row = [int(x) if x.isdigit() else x for x in row]  # convert numerical string to int which would remove quotes
                print(row)
    

    输出:

    ['amazed', 10]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-18
      • 2015-08-09
      • 2013-03-27
      相关资源
      最近更新 更多