实际上不可能知道哪些逗号应该是分隔符,哪些不是没有附加信息。您最好的选择可能是更改分隔符或确保所有非分隔符逗号在输入时以某种方式“转义”。
使用转义的解决方案:
如果所有非分隔符逗号都带有前缀,例如“\”,那么您可以用逗号分隔并加入任何以转义符开头的条目\
line = '123, developer, the role of developer is to develop softwares using languages such as C\\, C++ etc, college1'
temp = line.strip().split(',')
i=0
while i < len(temp)-1:
if temp[i][-1] == '\\':
temp[i:i+2] = [','.join(temp[i:i+2])]
else:
temp[i] = ','.join(temp[i].split('\\,'))
i += 1
empid, emp_title, emp_desc, college = temp
print('empid: '+empid+'\nemp_title: '+emp_title+'\nemp_desc: '+emp_desc+'\ncollege: '+college)
输出:
empid: 123
emp_title: developer
emp_desc: the role of developer is to develop softwares using languages such as C, C++ etc
college: college1
使用附加信息的解决方案:
另一方面,如果您由于某种原因不能对非分隔符逗号使用转义符,那么您的下一个最佳选择是强加附加信息。例如,如果您有理由相信只有 emp_desc 变量将有非分隔符逗号,那么您总是可以这样做:
temp = line.strip().split(",")
empid = temp[0]
emp_title = temp[1]
emp_desc = temp[2:len(temp)-1]
college = temp[-1]