【问题标题】:Zip two lists into text file将两个列表压缩成文本文件
【发布时间】:2015-08-04 15:39:26
【问题描述】:

我正在尝试创建一个程序来替换 Excel 以创建 CSV(供个人使用)。然而,下面的代码复制了第一个文本文件中的值。例如,我拥有的第一个文本文件是“SourceCAS Numbers”。

压缩时会产生以下内容 109922, 109922

当它应该执行以下操作时: 71751412, Abamectin

这是我的代码:

import os import csv import time

#----Federal/State----#
#Ask the user to fill out a text file with Source CAS numbers
print("Input the source CAS numbers with which you're comparing against")
os.system("notepad.exe C:\sourcecas.txt")
time.sleep(15)

#Take the text file with Source CAS Numbers and make it into a list
sourcecas = []
file = open(r'C:\sourcecas.txt', 'r')
sourcecas = file.readlines()
sourcecas[:] = [line.rstrip('\n') for line in sourcecas]

#Ask the user to fill out a text file with Source CAS names
print("Input the source CAS names in alphabetical order")
os.system("notepad.exe C:\sourcecasnames.txt")
time.sleep(15)

#Take the text file with Source CAS Names and make it into a list
sourcecasnames = []
file = open(r'C:\sourcecas.txt', 'r')
sourcecasnames = file.readlines()
sourcecasnames[:] = [line.rstrip('\n') for line in sourcecasnames]

#Zip the source cas numbers and names into a CSV file
zip(sourcecas, sourcecasnames)
with open(r'C:\CAS-S.csv', 'w') as f:
writer = csv.writer(f, delimiter=',')
writer.writerows(zip(sourcecas, sourcecasnames))

【问题讨论】:

  • 你能提供一些示例数据的要点吗?
  • link - 这些是 CAS 编号,如果你愿意的话,这些是化学名称,这些是化学名称 link

标签: python arraylist


【解决方案1】:

我已经把它剪掉了一点,但这是我编辑过的代码。整个问题是您没有关闭名称文件

import csv

fnumbers = r'casnum.txt'
fnames = r'casname.txt'
foutput = r'CAS-S.csv'
#Take the text file with Source CAS Numbers and make it into a list
sourcecas = []
file = open(fnumbers, 'r')
sourcecas = file.readlines()
sourcecas[:] = [line.rstrip('\n') for line in sourcecas]
file.close() # Here's the fix

#Take the text file with Source CAS Names and make it into a list
sourcecasnames = []
file = open(fnames, 'r')
sourcecasnames = file.readlines()
sourcecasnames[:] = [line.rstrip('\n') for line in sourcecasnames]
file.close() # Make sure to close your file when you're done with it

#Zip the source cas numbers and names into a CSV file
zip(sourcecas, sourcecasnames)
with open(foutput, 'w') as f: # note that with open() closes itself
    writer = csv.writer(f, delimiter=',')
    writer.writerows(zip(sourcecas, sourcecasnames))

之后,我的 CAS-S.csv 包含:

71751412,Abamectin
83329,Acenaphthene
...
10026116,Zirconium tetrachloride

【讨论】:

  • 这是个坏习惯。感谢您的简单修复。
  • 别担心,我建议在所有情况下都使用with open() as f 成语。这是一个很好的 Python 成语,减少了打字和潜在的错误。
猜你喜欢
  • 1970-01-01
  • 2021-10-18
  • 1970-01-01
  • 2018-06-03
  • 1970-01-01
  • 2014-10-06
  • 2011-04-27
  • 1970-01-01
  • 2018-08-17
相关资源
最近更新 更多