我有一个函数可以将新数据添加到 csv 文件中。我已经有点工作了。但是,我遇到了一些问题。
\n\n(name, phone, address, birthday)
,它将它们全部添加到一列中,而不是同一行中的单独列。(不太清楚如何将它们分成不同的列......)add_friend(blah, 31, 12, 45)
,它会返回说blah
未定义。但是,如果我写add_friend(3,4,5,6)
,它会将其添加到新行 \xe2\x80\x94but 中,添加到单个列中add_friend(Bob, address, phone, birthday)
应该声明False
,而不是添加它。但是,我不知道如何做到这一点。有任何想法吗?这是我的代码:
\n\ndef add_friend (name, phone, address, birthday):\n with open('friends.csv', 'ab') as f:\n newrow = [name, phone, address, birthday]\n friendwriter = csv.writer(open('friends.csv', 'ab'), delimiter=' ',\n quotechar='|', quoting=csv.QUOTE_MINIMAL)\n friendwriter.writerow(newrow)\n #friendreader = csv.reader(open('friends.csv', 'rb'), delimiter=' ', quotechar='|')\n #for row in friendreader:\n #print ' '.join(row)\n\n print newrow\n
Run Code Online (Sandbox Code Playgroud)\n
根据您的要求以及您似乎想要做的事情,我编写了以下内容。它应该足够详细以便可以理解。
读取 CSV 文件时,您需要与分隔符和其他属性保持一致。
另外,尝试移动"friends.csv"
到全局,或者至少在一些非硬编码常量中。
import csv
def print_friends():
reader = csv.reader(open("friends.csv", "rb"), delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for row in reader:
print row
def friend_exists(friend):
reader = csv.reader(open("friends.csv", "rb"), delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
for row in reader:
if (row == friend):
return True
return False
def add_friend(name, phone, address, birthday):
friend = [name, phone, address, birthday]
if friend_exists(friend):
return False
writer = csv.writer(open("friends.csv", "ab"), delimiter=' ', quotechar='|', quoting=csv.QUOTE_MINIMAL)
writer.writerow(friend)
return True
print "print_friends: "
print_friends()
print "get_friend: "
test_friend = ["barney", "4321 9876", "New York", "2000"]
print friend_exists(test_friend)
print "add_friend: "
print add_friend("barney", "4321 9876", "New York", "2000")
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
16912 次 |
最近记录: |