Python n00b 在这里。尝试使用 csvreader 从文件导入数组并打印一个值,但它添加了括号和单引号。
这是我的代码:
import random
import csv
with open('crimes.csv', 'r') as csvfile:
crimes = list(csv.reader(csvfile))
hello=["Hello","Greetings","Hi","Yo","Hiya","Hullo","Bonjour"]
world=["Kate Bush","Joe Smith", "Fred Hampton", "Joe Magee", "Hal Banks", "Seth Mougain"]
print("%s %s did a %s" % (random.choice(hello),random.choice(world),random.choice(crimes)))
当我运行它时,我得到的示例响应是: 嗨,哈尔·班克斯做了一次[“抢劫”]
但我希望它打印出来: 嗨,哈尔·班克斯抢劫了
我怎样才能删除这些意外的括号?或者将文件作为数组而不是“列表”导入?
问题在于
random.choice(crimes)
返回一个列表,即使它只包含一个项目。这是因为
csv.reader
将每一行读取为一个列表,其中每个单元格都是一个单独的列表元素。
可以通过访问列表中的第一个元素(索引为 0)来解决此问题。修改的
print
语句,如下所示:
print("%s %s did a %s" % (random.choice(hello), random.choice(world), random.choice(crimes)[0]))
添加
[0]
将从
random.choice(crimes)
返回的列表中提取第一个元素,从而删除括号和引号。