python - 从csv文件中的数字中识别字符

时间:2015-10-13 08:07:52

标签: python csv

我有一个小的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

4 个答案:

答案 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()函数),最后会得到一个包含所有字符和一个数字列表的列表。只需打印出你需要的那个。