Python程序,它从文本文件中读取一行并显示找到的一个数字

时间:2015-10-29 02:34:47

标签: python

def extractTemp():
    inputFile = open('P2text.txt','r+')

    line = inputFile.readline()

    for chr in line:
        if chr.isdigit():
            print(chr)
            inputFile.close()

extractTemp()

文本文件中包含数字95,但打印为:

9 
5

我猜测是因为它在每个字符上进行迭代并使95两个单独的字符。

所以我的问题是,如何将它们结合起来。或者,我该怎么做才能让这个程序运行得更好?

Bc在找到合并数字的解决方案时遇到了一个大漏洞,当有两个单独的数字如95和90时会发生什么。

如果我把所有东西连在一起,那将会变成9590。那么我该怎么做才能使这项工作成功呢?

基本上,如果在文本文件中给出一个句子,并且说出"我的数字是95和90"我希望能够打印这两个整数而忽略其余的整数。但是我这样做的方式,它会在不同的行上打印9,5,9,0。

所以我只是想知道如何将它们一起打印,因为95是95而不是9,5而90是90而不是9,0。因此,我想从阅读该句子的最终结果是:>> 95 90运行程序之后或者,如果我只能得到一个句子"我的号码为95"并打印:>> 95我也很满意

4 个答案:

答案 0 :(得分:1)

如果您希望输入如下:

  

这是95,有90

并希望输出:

95
90

你应该使用正则表达式。

import re

with open('path/to/file.txt') as inf:
    text = inf.read()  # generally bad practice, but...

numbers = re.findall(r"\d+", text)  # ['95', '90']
for number in numbers:
    print(number)

但是既然你似乎是一个新的程序员,我也不会指望你进入正则表达式的狂野世界。他们非常强大,但最终没必要。你可以这样做:

with open('path/to/file.txt') as inf:
    text = inf.read()

chars = [ch for ch in text if ch.isspace() or ch.isdigit()]
# [' ', ' ', '9', '5', ' ', ' ', ' ', ' ', '9', '0']
# every space and every digit

chars = ''.join(chars)
# "  95    90"
# join every element with the empty string

numbers = chars.strip().split()
# ['95', '90']
# strip off leading and trailing whitespace, then split on groups of whitespace

for number in numbers:
    print(number)  # as before

答案 1 :(得分:0)

试试这个:

toString

答案 2 :(得分:0)

你应该使用split()函数,如下所示:

inputFile=open('test.txt','r')
line=inputFile.readline().split()
for num in line:
    try:
        print int(num)
    except:
        pass
inputFile.close()

,结果将是:

90 95

答案 3 :(得分:-1)

您可以列出该行中的数字并进行打印。

def extract_temp(n):
    temp=[]
    line=n.readline()
    for ch in line:
        if ch.isdigit():
            temp.append(ch)
    print("".join(temp))