【问题标题】:Extracting numbers preceded by words from a txt. file in python从 txt 中提取前面有单词的数字。 python中的文件
【发布时间】:2018-05-24 01:03:47
【问题描述】:

我正在尝试从国家名称后面的单独文件中提取特定数字。代码似乎没有显示任何输入,我几乎不知道我在做什么。

它显示输出,但仅显示没有预期寿命数据或没有基尼数据的其他地方。

这是我从中提取的文件的示例

1:      Lesotho                                            :63.2                                              

2:      South Africa                                       :62.5                                              

3:      Central African Republic                           :61.3                                              

4:      Micronesia, Federated States of                    :61.1                                              

5:      Haiti                                              :60.8     

这是我目前的代码

country = []
info = [] 
def countryFinder(fileName,info):

    infile = open(fileName, "r")
    line = infile.readline()

    for line in infile:
        fields = line.split(":")
        country.append(fields[1].strip())
        info.append(fields[2].strip())

        return country, info

userCountry = input("Please enter a country (\"q to quit\"): ")

life = countryFinder("life.txt",info)
gini = countryFinder("gini.txt",info)



while userCountry != "q":
    if userCountry in life:
        print ("  Life Expectancy is ",life[info]," years at birth")
    else:
        print ("  No Life Expectancy Data")

    if userCountry in gini:
        print ("  Gini Value is ",gini[info])
    else:
        print ("  No Gini Data")

    userCountry = input("Please enter a country (\"q to quit\"): ")

软件:带有 python 3.6 的 spyder

【问题讨论】:

  • 你的意思是代码没有显示任何输出吗?另外,1) 指出你使用的是哪个版本的 python 2) 这个脚本是编译还是你收到错误消息?
  • 您是否检查了变量中保存的值以及代码中的不同点以验证值是否符合您的预期?你可以设置一些测试断言用例。
  • 例如,你的函数中的 country 应该是 country = fields[1] 吗?
  • @QHarr 它显示输出,但仅显示没有预期寿命数据或没有基尼数据的其他地方
  • 我正在使用 spyder 和 python 3.6

标签: python file extraction


【解决方案1】:

您编写了一个很好的代码,只是在这里和那里遗漏了一些行。我已经用#标记了你错过的行

country = []
info = []
dic = {} #
def countryFinder(fileName,info):

    infile = open(fileName, "r")
    line = infile.readline()

    infile = open(fileName, "r").readlines() #

    for line in infile:
        line.strip()
        fields = line.split(":")
        fields = fields[1:3] #
        country = fields[0]
        country = country.strip() #
        info = fields[1]
        info = float(info.strip("\n")) #
        dic[country] = info #
    return dic.copy() #

country = input("Please enter a country (\"q to quit\"): ")
life = countryFinder("life.txt",info)
gini = countryFinder("gini.txt",info)

while country != "q":
    info = life #
    if country in info:
        info = country #
        print ("  Life Expectancy is ",life[info]," years at birth")
    else:
        print ("  No Life Expectancy Data")

    info = gini #
    if country in info:
        info = country #
        print ("  Gini Value is ",gini[info])
    else:
        print ("  No Gini Data")

    country = input("Please enter a country (\"q to quit\"): ")

【讨论】:

  • 这似乎不起作用,它显示“TypeError: unhashable type: 'list'”
  • 请提供life.txt和gini.txt文件,我看看
  • 如何链接文件?
  • @Rad_Dad:我已经更新了解决方案。让我知道它现在是否有效。
  • @Rad_Dad 欢迎您! :) 请不要忘记将答案标记为解决方案
猜你喜欢
  • 2013-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-16
  • 1970-01-01
  • 1970-01-01
  • 2022-12-16
  • 2020-04-05
相关资源
最近更新 更多