需要从文本文件python中排序字符串

时间:2013-12-10 01:42:48

标签: python

我制作了一个程序,通过编写社会安全号码并将它们写入文本文件,或者将其写入程序(如果数字有效)。如果数字太长,或者评论数字太长。

现在我希望能够分别“呼唤他们”,但我不知道如何在我的文本文件中将有效数字与无效数字分开。

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

对于凌乱的文字感到抱歉,但感谢您的帮助!

编辑 - 这是它在文本文件中的外观

  1. 1992051155700数字太多
  2. 9205115570
  3. 92051155700
  4. 199205115570表格不正确 这就是文本文件的外观,但没有1,2,3,4

2 个答案:

答案 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)