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

2024-09-27 21:29:50 发布

您现在位置:Python中文网/ 问答频道 /正文

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

csv文件的结构如下

lastname, firstname (department)

假设我们有个名字叫让-克劳德·范·达姆

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

Tags: 文件csvimportmasterstringfirstnamejeanvan
3条回答

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

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

您可以使用熊猫库:

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

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

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

[2]在本例中是列号。你知道吗

如果它来自csv文件,那么我认为您可以导入csvmodule。然后你可以一行一行地迭代,每一行你都需要用逗号把它分开。对于姓氏,可以使用regex\((.*?)\)在括号中搜索单词。最后你需要拆下支架。你知道吗

相关问题 更多 >

    热门问题