我正在创建一个读取文件的程序,如果文件的第一行不是空白,则会读取接下来的四行.在这些行上执行计算,然后读取下一行.如果该行不为空,则继续.但是,我收到此错误:
ValueError: invalid literal for int() with base 10: ''.
它正在读取第一行但不能将其转换为整数.
我该怎么做才能解决这个问题?
代码:
file_to_read = raw_input("Enter file name of tests (empty string to end program):")
try:
infile = open(file_to_read, 'r')
while file_to_read != " ":
file_to_write = raw_input("Enter output file name (.csv will be appended to it):")
file_to_write = file_to_write + ".csv"
outfile = open(file_to_write, "w")
readings = (infile.readline())
print readings
while readings != 0:
global count
readings = int(readings)
minimum = (infile.readline())
maximum = (infile.readline())
Run Code Online (Sandbox Code Playgroud) 我正在使用以下课程轻松存储我的歌曲数据.
class Song:
"""The class to store the details of each song"""
attsToStore=('Name', 'Artist', 'Album', 'Genre', 'Location')
def __init__(self):
for att in self.attsToStore:
exec 'self.%s=None'%(att.lower()) in locals()
def setDetail(self, key, val):
if key in self.attsToStore:
exec 'self.%s=val'%(key.lower()) in locals()
Run Code Online (Sandbox Code Playgroud)
我觉得这比写出一个if/else块更具可扩展性.但是,eval似乎被认为是一种不良做法并且使用起来不安全.如果是这样,任何人都可以向我解释为什么并告诉我一个更好的方法来定义上面的类?
做了一个扩展用户的视图:
class Client(models.Model):
user = models.OneToOneField(User, related_name='user')
def __unicode__(self):
return "%s" % (self.user)
Run Code Online (Sandbox Code Playgroud)
我目前正在尝试通过访问 Client 对象来访问 User 模型。目前我在 python shell 中收到一个错误:
ValueError: invalid literal for int() with base 10:
Run Code Online (Sandbox Code Playgroud)
我知道这与访问 OneToOneField 有关,但我不知道为什么。就我而言,我找到的所有解决方案都是从用户模型的角度而不是扩展客户端的角度来看的。
为了让它更清楚。每当我访问用户时。
>>> client1 = User.objects.get(username="client1")
>>> client1.user
>>> client1.user.attribute
Run Code Online (Sandbox Code Playgroud)
它与扩展模型的属性相呼应,在本例中为客户端属性。我怎样才能以另一种方式实现这一目标。所以通过 Client 模型而不是 User 模型。
我正在Django中编写一个简单的搜索结果页面.
用户按文本搜索并从下拉列表中添加城市字段.
查询如下:
if 'query' in request.GET and request.GET['query']:
city = request.GET['city']
q = request.GET['query']
ct = Classified.objects.filter(name__icontains=q).filter(city__exact=city)
return render(request, 'template/search.html', {'ct': ct, 'query': q})
Run Code Online (Sandbox Code Playgroud)
分类的模型如下:
class Classified(models.Model):
name = models.CharField(max_length=256, unique=True)
email = models.CharField(max_length=100)
category = models.ForeignKey(Categories)
phone_number = models.IntegerField(max_length=10, default=0)
address = models.CharField(max_length=1000)
id = models.IntegerField(primary_key=True)
city = models.ForeignKey(Cities)
image = models.ImageField(blank=True, upload_to='static/img/')
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
城市如下:
class Cities(models.Model):
name = models.CharField(max_length=256)
def __unicode__(self):
return self.name
Run Code Online (Sandbox Code Playgroud)
在搜索时,/ search /页面给出了以下错误:
invalid literal for int() with base 10: 'Searched-city' …Run Code Online (Sandbox Code Playgroud) 不确定我的标题是否足够清晰.我有以下列表:
[u'394', u'132.2k', u'6.8k', u'1', u'100', u'457', u'3.5k', u'3.5k', u'184', u'507', u'57']
Run Code Online (Sandbox Code Playgroud)
我想循环遍历此列表,删除所有K,并在删除它们时将元素乘以1000.所以我想我需要在将它们相乘之前将每个字符串转换为整数.
我尝试了各种配方,但我有点失落.这是我到目前为止所做的事情:
for item in stringlist:
if 'k' in item:
finallist.append(item)
Run Code Online (Sandbox Code Playgroud)
但这根本不起作用,因为它返回了一个k没有任何数字的列表.我也尝试使用replace但无法使其工作.