Python-将单个csv单元格拆分为多个单元格

Python-将单个csv单元格拆分为多个单元格,python,pandas,Python,Pandas,我有一个只有一列的csv文件,单元格示例如下: "What is the capital of France?1)Lille 2)Paris OK3)Nice" 我试图通过将陈述与所有可能的答案分开来划分每个句子。有没有一种有效的方法可以做到这一点 我认为正则表达式的需要-\d+用于一个或多个数字,\是转义的): 样本: df = pd.DataFrame({'col':[ "What is the capital of France?1)Lille 2)Paris OK3)N

我有一个只有一列的csv文件,单元格示例如下:

"What is the capital of France?1)Lille 2)Paris OK3)Nice"
我试图通过将陈述与所有可能的答案分开来划分每个句子。有没有一种有效的方法可以做到这一点

我认为正则表达式的需要-
\d+
用于一个或多个数字,
\
是转义的

样本:

df = pd.DataFrame({'col':[
        "What is the capital of France?1)Lille 2)Paris OK3)Nice",
        "What is the capital of Slovakia?1)Bratislava OK 2)Zilina3)Praha"]})


df1 = df['col'].str.split('\d+\)', expand=True)
df1.columns = ['Question','No1','No2','No3']
print (df1)
                           Question             No1       No2    No3
0    What is the capital of France?          Lille   Paris OK   Nice
1  What is the capital of Slovakia?  Bratislava OK     Zilina  Praha
您可以将
re.split()
用于此模式:

import re

a = "What is the capital of France?1)Lille 2)Paris OK3)Nice"
answers = re.split(r'\d+\)', a)
print(answers)
输出:

['What is the capital of France?', 'Lille ', 'Paris OK', 'Nice']
当然,您可以根据需要调整此解决方案。

试试看

import re

txt = re.split("[0-9]+\)",txt)

这应该可以做到,您需要弄清楚如何将您的csv字符串设置为该字符串,并且re.split()可能需要修改,但应该可以工作:

csv_string = "What is the capital of France?1)Lille 2)Paris OK3)Nice"
csv_split = re.split('\d\)', csv_string)
question = csv_split[0]
options = []
for option in csv_split[1:]:
    options.append(option)
return options

我在我的shell中的python3中验证了这一点。享受吧!
csv_string = "What is the capital of France?1)Lille 2)Paris OK3)Nice"
csv_split = re.split('\d\)', csv_string)
question = csv_split[0]
options = []
for option in csv_split[1:]:
    options.append(option)
return options