【问题标题】:Python csv search scriptPython csv 搜索脚本
【发布时间】:2016-11-27 13:18:20
【问题描述】:

我希望编写一个从 csv 读取的 Python 脚本。 csv 由 2 列组成。我希望脚本逐行读取第一列并在第二行中找到相应的值。如果它在第二行中找到值,我希望它在第三列中输入一个值。

example of output

对此的任何帮助将不胜感激,我希望我的目标很明确。如果太模糊,请提前道歉。

【问题讨论】:

  • 欢迎来到 StackOverflow。这里的想法不是让人们为您编写代码,而是在您遇到困难的地方获得帮助。告诉我们您已经尝试过什么以及遇到问题的地方。
  • 您可以使用 pandas 将 csv 读取为表格。然后使用 group by 和字符串连接,如下所示:stackoverflow.com/questions/17841149/…,然后加入原始表和新表。如果你有兴趣,我可以写一个代码作为答案。

标签: python csv scripting


【解决方案1】:

此脚本读取test.csv 文件并将其解析并写入OUTPUT.txt

f = open("test.csv","r")
d={}
s={}
for line in f:
        l=line.split(",")
        if not l[0] in d:
                d[l[0]]=l[1].rstrip()   
                s[l[0]]=''
        else:
                s[l[0]]+=str(";")+str(l[1].rstrip())

w=open("OUTPUT.txt","w")
w.write("%-10s %-10s %-10s\r\n" % ("ID","PARENTID","Atachment"))
for i in d.keys():
        w.write("%-10s %-10s %-10s\r\n" % (i,d[i],s[i]))

f.close()
w.close()

例子:

输入:

1,123
2,456
1,333
3,
1,asas
1,333
000001,sasa
1,ss
1023265,333
0221212,
000001,sasa2
000001,sas4

输出:

ID         PARENTID   Atachment 
000001     sasa       ;sasa2;sas4
1023265    333                  
1          123        ;333;asas;333;ss
3                               
2          456                  
0221212  

【讨论】:

  • 感谢@Babyy,您能否解释一下 if not 和 else 部分。我不清楚 d 和 s 到底是什么意思,以及 's[l[0]]+=str(";")+str(l[1].rstrip())' 到底在做什么。
猜你喜欢
  • 2012-01-10
  • 1970-01-01
  • 2013-10-19
  • 2011-08-30
  • 1970-01-01
  • 2012-01-11
  • 2023-03-13
  • 2019-06-30
  • 1970-01-01
相关资源
最近更新 更多