即使我知道密钥IS实际上在字典中,我也会因为字典密钥而出现KeyError.关于可能导致这种情况的任何想法?
print G.keys()
Run Code Online (Sandbox Code Playgroud)
返回以下内容:
['24', '25', '20', '21', '22', '23', '1', '3', '2', '5', '4', '7', '6', '9', '8', '11', '10', '13', '12', '15', '14', '17', '16', '19', '18']
Run Code Online (Sandbox Code Playgroud)
但是当我尝试在下一行代码中访问字典中的值时......
for w in G[v]: #note that in this example, v = 17
Run Code Online (Sandbox Code Playgroud)
我收到以下错误消息:
KeyError: 17
Run Code Online (Sandbox Code Playgroud)
任何帮助,提示或建议都表示赞赏.谢谢.
[请注意,这是一个与已经回答的问题不同的问题如何使用Python的内置.csv编写器模块替换列?]
我需要在一个巨大的Excel .csv文件中进行查找和替换(特定于一列URL).由于我正处于尝试自学脚本语言的开始阶段,我想我会尝试在python中实现该解决方案.
当我在更改条目内容后尝试写回.csv文件时,我遇到了麻烦.我已经阅读了有关如何使用编写器的官方csv模块文档,但是没有一个示例涵盖了这种情况.具体来说,我试图在一个循环中完成读取,替换和写入操作.但是,在for循环的参数和writer.writerow()的参数中都不能使用相同的'row'引用.所以,一旦我在for循环中进行了更改,我应该如何写回文件?
编辑:我实施了S. Lott和Jimmy的建议,结果仍然相同
编辑#2:根据S. Lott的建议,我将"rb"和"wb"添加到open()函数中
import csv
#filename = 'C:/Documents and Settings/username/My Documents/PALTemplateData.xls'
csvfile = open("PALTemplateData.csv","rb")
csvout = open("PALTemplateDataOUT.csv","wb")
reader = csv.reader(csvfile)
writer = csv.writer(csvout)
changed = 0;
for row in reader:
row[-1] = row[-1].replace('/?', '?')
writer.writerow(row) #this is the line that's causing issues
changed=changed+1
print('Total URLs changed:', changed)
Run Code Online (Sandbox Code Playgroud)
编辑:供您参考,这是解释器的新完整回溯:
Traceback (most recent call last):
File "C:\Documents and Settings\g41092\My Documents\palScript.py", line 13, in <module>
for row …Run Code Online (Sandbox Code Playgroud) 一些有用的计算器用户指出的是无论是pyodbc也不蟒蛇,SYBASE插件支持在SQLAlchemy中的Sybase表反映.
所以,我的问题是:是否有任何替代方案可用于反映Sybase部署中表的数据库元数据?或者,如果那是不可能的,有没有一种巧妙的方法来修补和/或破解解决方案以下拉表格元数据以进行解析和查询构建?
我需要在一个巨大的Excel .csv文件中进行查找和替换(特定于一列URL).由于我正处于尝试自学脚本语言的开始阶段,我想我会尝试在python中实现该解决方案.
我在解决方案的"替换"部分遇到了麻烦.我已经阅读了关于如何使用编写器的官方csv模块文档,但对我来说还没有一个足够清晰的例子(是的,我很慢).那么,现在问题是:如何使用writer对象迭代csv文件的行?
ps为笨拙的代码提前道歉,我还在学习:)
import csv
csvfile = open("PALTemplateData.csv")
csvout = open("PALTemplateDataOUT.csv")
dialect = csv.Sniffer().sniff(csvfile.read(1024))
csvfile.seek(0)
reader = csv.reader(csvfile, dialect)
writer = csv.writer(csvout, dialect)
total=0;
needchange=0;
changed = 0;
temp = ''
changeList = []
for row in reader:
total=total+1
temp = row[len(row)-1]
if '/?' in temp:
needchange=needchange+1;
changeList.append(row.index)
for row in writer: #this doesn't compile, hence the question
if row.index in changeList:
changed=changed+1
temp = row[len(row)-1]
temp.replace('/?', '?')
row[len(row)-1] = temp
writer.writerow(row)
print('Total URLs:', total) …Run Code Online (Sandbox Code Playgroud) 尝试使用Python的csv.writer生成的bcp文件时,我遇到了EOF问题.我做了大量的谷歌搜索,没有运气,所以我转向你有用的人在SO
这是错误消息(在subprocess.call()行上触发):
Starting copy...
Unexpected EOF encountered in BCP data-file.
bcp copy in failed
Run Code Online (Sandbox Code Playgroud)
这是代码:
sel_str = 'select blahblahblah...'
result = engine.execute(sel_str) #engine is a SQLAlchemy engine instance
# write to disk temporarily to be able to bcp the results to the db temp table
with open('tempscratch.csv','wb') as temp_bcp_file:
csvw = csv.writer(temp_bcp_file)
for r in result:
csvw.writerow(r)
temp_bcp_file.flush()
# upload the temp scratch file
bcp_string = 'bcp tempdb..collection in @INFILE -c -U username -P password -S DSN'
bcp_string = string.replace(bcp_string,'@INFILE','tempscratch.csv') …Run Code Online (Sandbox Code Playgroud) python ×5
csv ×3
file-io ×2
sqlalchemy ×2
bcp ×1
dictionary ×1
eof ×1
exception ×1
key ×1
python-3.x ×1
sql ×1
sybase ×1