如何读取文件并打印只有一定数量的数字

时间:2014-09-11 04:22:25

标签: python python-3.x

input_file = input("Open what file:")

try:
    input_file = open(input_file)
    for line_str in input_file:
         if input_file == 4 and line_str.isdigit():
    print(line_str)

except IOError:
    print("The input file doesn't exist.")
    sys.exit(1)

    input_file.close

在我的文本文件中,我有这些数字:

174862
2000
2400
9996
12
55

如何打印出只有至少4位数的数字?

4 个答案:

答案 0 :(得分:3)

您需要去除附加到line_str的新行char。

尝试这样的事情:

input_file = "file.txt"

try:
    input_file = open(input_file)
    for line_str in input_file:
        line_str = line_str.strip()

        if len(line_str) == 4 and line_str.isdigit():
            print(line_str)

except IOError:
    print("The input file doesn't exist.")
    sys.exit(1)

    input_file.close

您还可以使用正则表达式来查看是否有一组4位数。如果你想要我,我可以补充一下如何实现。

编辑:要使用正则表达式匹配,您可以使用以下

import re
line_str = line_str.strip()

    if re.match(r'^[0-9]{4}$', line_str):
            print "RE " + line_str

re是pythons正则表达式模块。如果没有匹配,re.match将返回None对象。因此,您可以直接在if条件中使用它。 r'^ [0-9] {4} $' - 基本上是你的正则表达式。 '^'表示开头,'$'表示结束。 [0-9]是数字范围,{}表示计数。

希望它能够解决问题。

答案 1 :(得分:2)

您希望比较input_file == 4 input_file,而不是比较len(永远不会是真的,因为line_str是文件对象,而不是整数)。 4.尝试:

for line_str in input_file:
    if len(line_str) >= 4 and line_str.isdigit():
        print(line_str)

这将仅打印长度至少为四个字符且仅由数字组成的行。

您可能也应该使用with语句来处理文件的关闭,但这是一个小问题(如果没有它,它可能会工作)。

答案 2 :(得分:0)

import re
try:
    input_file = open("input.txt",'r')
    x=input_file.read()
    print re.findall(r"(\d{4,})",x)


except IOError:
    print("The input file doesn't exist.")
    sys.exit(1)

    input_file.close

试试这个。这将给出大于长度4的所有数字。

这也不会循环播放文件。

答案 3 :(得分:0)

您可以使用len()函数检查您正在阅读的数字的长度。

我修改了你的程序。

import sys
input_file = input("Open what file:")

try:
    with open(input_file) as in_file:
        for line_str in in_file:
         if len(line_str.strip()) >= 4 and line_str.strip().isdigit():

            print(line_str.strip())

except IOError:
    print("The input file doesn't exist.")
    sys.exit(1)

使用with时,您也不需要关闭文件。