我遇到了一个csv文件,这让我想知道从中获取信息的正确流程应该是什么。我想读取每一行,然后读取变量lastname,firstname和department中的每一行,但是
csv文件的结构就像这样
lastname, firstname (department)
假设我们有一个名字Jean-Claude Van Damme
Van Damme, Jean-Claude (Karate-Master)
在变量lastname,firstname和department中分隔这样的字符串和存储的最佳方法是什么?
import csv
import string
import re
file = open('path/testing_delimiters.csv', 'rb')
reader = csv.reader(file)
for row in reader:
data = map(string.strip, row)
print data
# output so far
# ['Van Damme', 'Jean-Claude (Karate-Master)']
任务是分离让 - 克劳德和(空手道 - 大师)
# expected output
# ['Van Damme', 'Jean-Claude', 'Karate-Master']
答案 0 :(得分:2)
您可以使用正则表达式和捕获组:
import re
s = 'Van Damme, Jean-Claude (Karate-Master)'
m = re.match(r'([^,]*),\s+([^,]+)\s+\(([^\(\)]*)\)', s)
lastname, firstname, department = m.groups()
# [^,]* any non-comma, zero or more
# [^\(\)]* any non-(), zero or more
# \s+ any whitespace char, one or more
# (...) capturing group
# \( \) match parenthesees, escaped because of special meaning
答案 1 :(得分:0)
您可以使用 Pandas 库:
import pandas as pd
df = pd.read_csv('your_file.csv',sep=',|\(',engine='python',header=None)
使用两个分隔符,
和(
然后你可以剥离)
df[2]=df[2].str.strip(')')
在这种情况下, [2]
是列号。
答案 2 :(得分:-1)
如果它来自csv文件,那么我认为你可以导入csv module。然后你可以逐行迭代它,你需要用逗号分割它们。在姓氏上,您可以使用正则表达式\((.*?)\)
在括号之间搜索单词。最后你需要删除支架。