【问题标题】:Compare file and list to see if they are identical比较文件和列表以查看它们是否相同
【发布时间】:2015-11-02 14:52:56
【问题描述】:

我有一个包含数字 1-100 的文件和一个包含相同数字的列表。我在比较它们并检查它们是否相同时遇到了一些问题。 到目前为止,这是我的代码:

f = open("tall.txt", "w")

for i in range(101):
f.write(str(i) + "," + " ")

f.close()


with open('tall.txt') as a:
    lines = a.read().splitlines()

tall = []

for i in range(101):
    tall.append(i)

for (i,t) in zip(lines,tall):
    if i != t:
        print("Does not match")
        break
 #else:
    print("Match")
    break

到目前为止,我遇到的问题是,如果我打印以 [' 开头并以 '] 结尾的行,因此与其他列表不匹配。

我该如何解决这个问题?它是一种更简单的方法来完成整个过程吗?

谢谢。

【问题讨论】:

  • 值的顺序重要吗?例如[1,2][2,1] 是一样的吗?如果没关系,为什么不直接做一个数组交集呢?
  • 是的,订单很重要。想检查它们的顺序是否相同。

标签: python list file


【解决方案1】:

splitlines() 通过将\n 或换行符作为分隔符来读取您的python 文件。但是,在程序的第一步写入的文件在每个数字后没有 \n,正如 match 逻辑所期望的那样。于是就有了问题。

以下修改后的代码可以正常工作。我在写入文件时删除了, 并将其更改为\n。另外检查条件i!=t应该是i!=str(t)

   f=open("tall.txt", "w")

    for i in range(101):
      f.write(str(i) + "\n")

    f.close()


    with open('tall.txt') as a:
        lines = a.read().splitlines()

    tall = []

    for i in range(101):
        tall.append(i)

    for (i,t) in zip(lines,tall):
        if i != str(t):
            print("Does not match")
            break
     #else:
        print("Match")
        break

【讨论】:

    猜你喜欢
    • 2017-05-02
    • 1970-01-01
    • 2012-08-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-22
    相关资源
    最近更新 更多