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位数的数字?
答案 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
时,您也不需要关闭文件。