我有一个小的csv文件,它有两列: A列(包含随机字符列表); B列(包含随机数列表)。
示例csv:
blpcfgokakmgnkcojhhkbfbldkacnbeo,695108
pjkljhegncpnkpknbcohdijeoejaedia,678425
apdfllckaahabafndbhieahigkjlhalf,651374
...
我需要识别并提取每行中的字符(忽略数字),然后打印出结果 运行以下代码会将两列都作为输出:
import csv
with open('small.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row
答案 0 :(得分:0)
import csv
with open('small.csv', 'rb') as f:
reader = csv.DictReader(f)
data = {}
for row in reader:
for header, value in row.items():
try:
data[header].append(value)
except KeyError:
data[header] = [value]
char_values = data['A'] # extract Column A
int_values = data['B'] # extract Column B
答案 1 :(得分:0)
你快到了。代码中的row
变量将是一个列表,其中包含文件中行的元素(因此对于csv,它将一个接一个地保存这些元素:
['blpcfgokakmgnkcojhhkbfbldkacnbeo', '695108']
['pjkljhegncpnkpknbcohdijeoejaedia', '678425']
['apdfllckaahabafndbhieahigkjlhalf', '651374']
...
)。
因此,如果您只想用字母打印部件,则需要更改代码:
import csv
with open('small.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
print row[0] # note the additional [0]!
这只会打印此列表的第一个元素(因此按照上面的示例打印
blpcfgokakmgnkcojhhkbfbldkacnbeo
pjkljhegncpnkpknbcohdijeoejaedia
apdfllckaahabafndbhieahigkjlhalf
...
)
答案 2 :(得分:0)
在给出的示例中,以下内容将起作用:
import csv
with open('small.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
for each1 in row:
if each1.isalpha():
print each1
但是,如果数据中存在混合值,则需要再降低一个级别,如下所示:
import csv
with open('small.csv', 'rb') as f:
reader = csv.reader(f)
for row in reader:
for each1 in row:
item = ""
for each2 in each1:
if each2.isalpha():
item +=each2
print item
答案 3 :(得分:0)
当您阅读CSV时,您最终会得到一个包含一个字符和一个数字的列表。转置所有列表(参见 zip()和 iterator.izip()函数),最后会得到一个包含所有字符和一个数字列表的列表。只需打印出你需要的那个。