作为标题,我一直在尝试从文件中读取文本,转换为int
并将其存储在列表中。我的文本文件如下所示:
1,2
3,4
5,6
我想阅读此文件,将每对数字放入列表m
,并将这些列表存储在更大的列表lis
中。这是我的尝试:
def read_file():
lis = []
m = [0,0]
with open("data.txt") as f:
for line in f:
m[0], m[1] = line.split(",") # assign to list m
m[0] = int(m[0]) # cut off '\n' and for later use
m[1] = int(m[1])
lis.append(m) # store in lis
print lis
我希望lis
是这样的:
[[1, 2], [3, 4], [5, 6]]
但相反,它是:
[[5, 6], [5, 6], [5, 6]]
我尝试了insert
而不是append
,但似乎并非如此。我需要一些帮助 - 提前谢谢你!
答案 0 :(得分:4)
您在循环的每次迭代中重复使用相同的列表m
,每次都会覆盖上一次迭代中设置的值。最后,lis
包含许多对同一列表的引用。
而是在循环中为m
整体分配一个新值:
for line in f:
m = [0,0]
m[0], m[1] = line.split(",")
m[0] = int(m[0])
m[1] = int(m[1])
lis.append(m)
或更短:
for line in f:
m = line.split(",")
m[0] = int(m[0])
m[1] = int(m[1])
lis.append(m)
甚至更短,使用地图:
for line in f:
m = list(map(int, line.split(",")))
lis.append(m)
甚至更短,使用列表理解:
lis = [list(map(int, line.split(","))) for line in f]
答案 1 :(得分:2)
def read_file():
lis = []
with open("data.txt") as f:
for line in f:
m, n = line.split(",")
lis.append([int(m), int(n)])
print lis
答案 2 :(得分:2)
在lis
所有索引中引用一个列表m
。如果m
中发生了任何更新,m
会在每个地方更新
试试这个
lis.append( list(map(int,line.split(","))))
<强>输出强>
[['1','2'],['3','4'],['5','6']]
答案 3 :(得分:1)
使用<form method="post">
{% csrf_token %}
<label for="first_name">Vorname </label>
<input style="margin-bottom: 1em;" id="first_name" class="form-control" type="text" maxlength="25" name="first_name" value="{{ user.first_name }}"><br>
<label for="last_name">Nachname </label>
<input style=" margin-bottom: 1em;" id="last_name" class="form-control" type="text" maxlength="25" name="last_name" value="{{ user.last_name }}"><br>
<label for="email">E-Mail </label>
<input style="margin-bottom: 1em;" id="email" class="form-control" type="email" maxlength="50" required=True unique=True name="email" value="{{ user.email }}"><br>
<button class="btn btn-success btn-sm" type="submit">Bestätigen</button>
<a style="margin-left: 1em;" href="{% url 'accounts:view_profile' %}" id="cancel" name="cancel" class="btn btn-default">Zurück</button></a>
{% if form.errors %}
<p style="margin-left: 5em;" class=" label label-danger">
Das ist keine gültige E-Mail-Adresse. Bitte versuche Sie es erneut.
</p>
{% endif %}
</form>
对象代替使用csv.reader
(逗号)作为默认字段分隔符:
,
输出:
import csv
with open('data.txt') as f:
reader = csv.reader(f)
result = [list(map(int, lst)) for lst in reader]
print(result)
https://docs.python.org/3/library/csv.html?highlight=csv#csv.reader