为什么strptime不能在我的代码中工作?

时间:2017-05-15 07:18:33

标签: python django datetime strptime

我正在使用以下代码填充我的数据库。我已导入from datetime import datetime并尝试创建一个datetime对象以保存到django的DateTimeField。

with open(os.path.join(settings.BASE_DIR, 'media', 'attendance', 'populate.csv')) as f:
        reader = csv.reader(f)
        for row in reader:
            obj, created = Attendance.objects.get_or_create(
                employee_id=row[0],
                punch=datetime.strptime(row[1], "%Y%m%d %H%M"),
                )

这是我得到的错误。

ValueError at /attn/populate/
time data ' 20170604 0600' does not match format '%Y%m%d %H%M'

似乎字符串DOES与格式匹配。我在这里做错了什么?

2 个答案:

答案 0 :(得分:2)

字符串为' 20170604 0600',请注意前导空格。

将格式更改为' %Y%m%d %H%M',或使用strip从字符串中删除任何前导或尾随空格:

for row in reader:
            obj, created = Attendance.objects.get_or_create(
                employee_id=row[0],
                punch=datetime.strptime(row[1].strip(), "%Y%m%d %H%M"))

答案 1 :(得分:1)

字符串中的额外前导空格

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>

<table border="1" class="studtbl">
  <tr>
    <td><input type="text" id="name"></td>
    <td><input type="text" id="email"></td>
    <td><input type="text" id="age"></td>
    <td><input type="text" id="gender"></td>
    <td><input type="text" id="height"></td>
    <td><button class="save">save</button></td>
  </tr>
  <tr>
    <th>Name</th>
    <th>Email</th>
    <th>Age</th>
    <th>Gender</th>
    <th>Height</th>
  </tr>
  <tr>
    <td>pqr</td>
    <td>pqr@gmal.com</td>
    <td>21</td>
    <td>M</td>
    <td>6 feet</td>
  </tr>
  <tr>
    <td>abc</td>
    <td>abc@gmal.com</td>
    <td>23</td>
    <td>M</td>
    <td>5 feet 7 inches</td>
  </tr>
  <tr>
    <td>xyz</td>
    <td>xyz@gmal.com</td>
    <td>27</td>
    <td>M</td>
    <td>5 feet 9 inches</td>
  </tr>



</table>