2015-10-13 49 views
1

我有一个小的csv文件,它有两列: 列A(其中包含随机字符列表);列B(其中包含随机数列表)。python - 从csv文件中的数字中识别字符

例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 
+1

您应该在问题中包含示例csv,而不是链接到它。 –

+0

网站上有多个类似的问题。环视四周 – Joop

回答

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 
... 

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 
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 
0

当U读CSV你结束了一个字符的多个列表和一个号码。转置所有列表(请参阅zip()iterator.izip()函数),最后将列出所有字符和一个数字列表。只需打印您需要的那个。