在 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]
在这种情况下是列号。
我遇到了一个 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]
在这种情况下是列号。