在 python 中用不同的分隔符分隔字符串

Separate a string with different delimiters in python

我遇到了一个 csv 文件,这让我想知道从中获取信息的正确流程应该是什么。我想读取每一行,然后读取变量 lastname、firstname 和 department 中的每一行,但是,

csv文件的结构是这样的

lastname, firstname (department)

假设我们有一个名字 Jean-Claude Van Damme

Van Damme, Jean-Claude (Karate-Master)

分隔此类字符串并存储在变量姓氏、名字和部门中的最佳方法是什么?

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']

您可以使用正则表达式和捕获组:

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

如果它来自 csv 文件,那么我认为您可以导入 csv module。然后你可以逐行迭代它,每一行你需要用逗号分隔它。在姓氏上,您可以使用正则表达式 \((.*?)\) 搜索方括号之间的单词。最后你需要移除支架。

您可以使用 Pandas 库:

import pandas as pd
df = pd.read_csv('your_file.csv',sep=',|\(',engine='python',header=None)

使用两个分隔符 ,( 然后你可以剥离 )

df[2]=df[2].str.strip(')')

[2] 在这种情况下是列号。