我制作了一个程序,通过编写社会安全号码并将它们写入文本文件,或者将其写入程序(如果数字有效)。如果数字太长,或者评论数字太长。
现在我希望能够分别“呼唤他们”,但我不知道如何在我的文本文件中将有效数字与无效数字分开。
def showALLnumbers():
print ("all numbers:")
textfile = open("textfile.txt", "r")
data = textfile.read()
print (data)
textfile.close
这就是我要求他们所有人,但我如何才能得到如下评论的那些,以及如何在没有这些评论的情况下获得这些评论呢?
if socialsecuritynumber.isdigit()== False:
print (number, "\t", "not only digits")
textfile.write("\n" + socialsecuritynumber + "\t" + "not only digits" )
return False
对于凌乱的文字感到抱歉,但感谢您的帮助!
编辑 - 这是它在文本文件中的外观
答案 0 :(得分:1)
为了将来参考,你真的应该以更好的格式保存你的代码 - CSV是一个很好的格式,Python直观支持它。能够在Excel中加载和更改内容非常重要!
无论如何,让我们与你现在所拥有的一起工作吧。我们要做的是遍历文件的每一行,并通过用空格字符分割行来检查是否有注释。 CSV基本上以相同的方式工作,除了它强制要求分割线的方式,以便它的结构化,你不会意外地分裂你不想要的东西。请注意如果我们按空格分割,如果我们可能有一个像“1234 5678”这样的条目,它将无法正确解析!
代码。从您的问题来看,听起来您不希望有任何已保存的数据结构,如果您的文件真的大,这可能会遇到性能问题 - 我认为我们远远没有达到那个规模,这很好。
def showGoodNumbers():
print ("all good numbers:")
textfile = open("textfile.txt", "r")
for line in textfile.readlines():
split_line = line.split(' ')
if len(split_line) == 1:
print(split_line) # this will print as a tuple
textfile.close
def showBadNumbers():
print ("all bad numbers:")
textfile = open("textfile.txt", "r")
for line in textfile.readlines():
split_line = line.split(' ')
if len(split_line) > 1:
print(split_line) # this will print as a tuple
textfile.close
您还可以将它们组合成一个调用,以创建两个带有getter的列表:
good = []
bad = []
def getNumbers():
textfile = open("textfile.txt", "r")
for line in textfile.readlines():
split_line = line.split(' ')
if len(split_line) > 1:
good.append(line)
else:
bad.append(line)
textfile.close
def getBadNumbers():
print("Getting bad numbers")
print("\n".join(bad))
def getGoodNumbers():
print("Getting good numbers")
print("\n".join(good))
答案 1 :(得分:0)
我并不十分确切地知道你的问题是什么。你的意思是你有一批预先评论的社会安全号码,你需要挑选带有评论的那些吗?如果是这样的话,那就是:
comment_list = []
normal_list = []
for line in file:
if len(line) > 9:
comment_list.append(line)
else:
normal_list.append(line)