【问题标题】:Outputting contents of list into three separate files将列表的内容输出到三个单独的文件中
【发布时间】:2021-04-05 01:01:56
【问题描述】:

我有两个外部文件,我已经将它们组合成一个按字母排序的列表,我需要将 A-I、J-R 和 S-Z 范围内的所有名称输出到三个不同的 .txt 文件。

# Send names beginning with A-I to new file.
for x in names:
    if names[x] == ["A" "B" "C" "D" "E" "F" "G" "H" "I"]:
            print('babyNamesAtoI.txt', file=f)
# Send names beginning with J-R to new file.
    elif names[x] == ["J" "K" "L" "M" "N" "O", "P", "Q", "R"]:
        print('babyNamesJtoR.txt', file=f)
# Send names beginning with S-Z to new file.
else:
      print('babyNamesStoZ', file=f)

每次运行都会出现这个错误:

Traceback (most recent call last):
  File "C:/Users/xxx/Desktop/Babynamesort.py", line 37, in <module>
    if names[x] == ["A" "B" "C" "D" "E" "F" "G" "H" "I"]:
TypeError: list indices must be integers or slices, not str

【问题讨论】:

    标签: python list output typeerror


    【解决方案1】:

    xnames 的一个元素,所以说names[x] 没有任何意义。如果要匹配第一个字母,请执行if x[0] in "ABCDEFGHI":。但是,“打印”语句也不会像您认为的那样做。我想你想要:

    f1 = open("babyNamesAtoI.txt","w")
    f2 = open("babyNamesJtoR.txt","w")
    f3 = open("babyNamesStoZ.txt","w")
    for name in names:
        if name[0] in "ABCDEFGHI":
            print( name, file=f1 )
        elif name[0] in "JKLMNOPQR":
            print( name, file=f2 )
        else:
            print( name, file=f3 )
    

    【讨论】:

    • 这解决了我创建文件的问题,但其中没有显示任何名称。编辑 - 我忘了在最后添加 .close() ,现在它可以工作了。谢谢!
    【解决方案2】:

    问题出在

    if names[x] == ["A" "B" "C" "D" "E" "F" "G" "H" "I"]:
    

    这不是真正的 Python 语法。一个解决方案可能是利用字符串与数学运算符的比较。

    f1 = open('babyNamesAtoI.txt', 'w')
    f2 = open('babyNamesJtoR.txt', 'w')
    f3 = open('babyNamesStoZ.txt', 'w')
    
    for name in names:
        if (name >= "A" and name < "J"):
            f1.write(name)
        elif (name >= "J" and name < "S"):
            f2.write(name)
        else
            f3.write(name)
    
    f1.close()
    f2.close()
    f3.close()
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-19
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      • 2013-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多