我正在实现客户列表。我想给用户导入一个以csv文件为基础的新客户端的可能性。 客户模型具有以下字段:客户,姓名,姓氏,电子邮件,电话
所以我创建了这个模型:
<svg>
<g transform={`translate(${width/2},${width/2}) rotate(-33.75)`}>
{trackIds.map((trackId, i) => {
const isCurrentTrack = trackId == this.props.focusedTrackId
return (
<g key={trackId} transform={`rotate(${i * 360 / trackIds.length})`}>
{arcMilestones.map((milestone) => {
const isCurrentMilestone = isCurrentTrack && milestone == currentMilestoneId
const isMet = this.props.milestoneByTrack[trackId] >= milestone
return (
<path
key={milestone}
className={'track-milestone ' + (isMet ? 'is-met ' : ' ') + (isCurrentMilestone ?
'track-milestone-current' : '')}
onClick={() => this.props.handleTrackMilestoneChangeFn(trackId, milestone)}
d={this.arcFn(milestone)}
style={{fill: isMet ? categoryColorScale(tracks[trackId].category) : undefined}} />
)
})}
<circle
r="8"
cx="0"
cy="-50"
//style={{fill: categoryColorScale(tracks[trackId].category)}}
className={"track-milestone " + (isCurrentTrack && !currentMilestoneId ? "track-milestone-current" : "")}
onClick={() => this.props.handleTrackMilestoneChangeFn(trackId, 0)} />
</g>
)})}
</g>
</svg>
以及views.py中的此功能:
class CsvClient(models.Model):
file_name = models.FileField(upload_to='csv-cliente')
uploaded = models.DateTimeField(auto_now_add=True)
activated = models.BooleanField(default=False)
def __str__(self):
return f"File id: {self.id}"
它可以工作,请期待这样的事实:如果在csv文件中我有以下行:
Nutella Antonio Dello Iudice
其中 nutella是客户 安东尼奥是名字 Dello Iodice是姓 电子邮件和电话为空
基本上,它将其解释为 姓Dello是电子邮件,Iudice是电子邮件。
如果姓氏由2个或更多的单词组成,我怎么告诉他不要分开?
PS:这是一种好奇心,但是我如何知道用户导入的csv文件是否被分隔;并不是 , ?因为我将其设置为分隔符“;”,但是如果用户导入一个以“”分隔的文件,则我的代码将无法工作,对吗?
答案 0 :(得分:0)
现在您要替换“;”用空格。因此,像Nutella;Antonio Dello; Iudice
这样的行将转换为Nutella Antonio Dello Iudice
。
此替换后,您将拆分空格。
为什么不删除row = row.replace(";", " ")
而只做row = row.split(";")
?
答案 1 :(得分:0)
如果我对您的问题理解正确,那么您想检查使用了什么分隔符吗?
一种简单的方法是检查文件中的; -并且如果它们的数量大于或等于4(0; 1; 2; 3; 4),则分隔符为;。
第一个有关拆分您姓氏的问题:
row = "".join(row)
row = row.replace(";", " ")
row = row.split(" ")
为什么替换?有空格?只需用分隔符分隔行,因为在有效CSV中,不允许在内容内部使用分隔符。
row = "".join(row)
row = row.split(";")
现在,包含空格时不会拆分您的姓氏。