相关疑难解决方法(0)

在元组定义中使用尾随逗号的语法规则是什么?

在单个元素元组的情况下,需要尾随逗号.

a = ('foo',)
Run Code Online (Sandbox Code Playgroud)

那个有多个元素的元组怎么样?似乎尾随逗号是否存在,它们都是有效的.它是否正确?在我看来,使用尾随逗号更容易编辑.这是一种糟糕的编码风格吗?

a = ('foo1', 'foo2')
b = ('foo1', 'foo2',)
Run Code Online (Sandbox Code Playgroud)

python syntax tuples

105
推荐指数
7
解决办法
4万
查看次数

Python 将字符串赋值给字典后转成元组

我有一个非常奇怪的python问题。我已经问过几位同事,他们都不知道这是怎么发生的以及如何解决的。

我有一个从 API 调用中收到的字符串的浅字典,我想将其中的一些值分配给一个新的字典。

这就是第一个 dict 的样子。只是一堆字符串: 这就是第一个 dict 的样子。 只是一堆字符串

我将 dict1 中的一些值分配给 dict2 中的一些键。非常基础

    dict2={}
    dict2['access_key'] = dict1['access_key']
    dict2['secret_access_key'] = dict1['secret_access_key'],
    dict2['session_token'] =dict1['session_token'],
    dict2['region'] = dict1['region']
Run Code Online (Sandbox Code Playgroud)

然后发生这种情况。“秘密访问密钥”和“session_token”的值被转换成元组。“access_key”和“region”仍然是字符串 然后发生这种情况。 “秘密访问密钥”和“session_token”的值被转换成元组。 “access_key”和“region”仍然是字符串

我已经尝试将值初始化为字符串,访问元组的第一个条目并将值转换为字符串。所有这一切都没有改变任何事情。似乎该值被分配得很好,然后发生了一些奇怪的事情,将它变成了一个元组

这是我的解释器设置的屏幕截图。我正在使用 Python 3.6 这是我的解释器设置的屏幕截图。 我正在使用 Python 3.6

我真的为这个疯狂:-/ 任何帮助将不胜感激

python

13
推荐指数
2
解决办法
1098
查看次数

Python元组...不是一个元组?逗号有什么作用?

我在课程材料中查看代码,并且必须编写一个函数,将值99添加到a listtuple.最终代码如下所示:

def f(l):
    print(l)
    l += 99,
    print(l)

f([1,2,3])
f((1,2,3))
Run Code Online (Sandbox Code Playgroud)

这被用来表示不同的东西,但我有点挂在线上l += 99,.这里做的事情,就是创建一个包含99和迭代list,以及tuple支持这样的对象的简单的"加法"来创建一个新的实例/添加了新的元素.

我真正得到的是使用语法创建的是什么element,?如果我喜欢一个分配x = 99,type(x)tuple,但如果我尝试运行x = tuple(99)的99是不是可迭代就会失败.所以有:

  • 使用语法创建某种中间可迭代对象element,
  • 是否有一个特殊的函数定义,允许调用tuple没有迭代,并以某种方式,映射到那个?

编辑:如果有人想知道为什么接受的答案是那个:我的第二个问题的解释成功了.我应该对我的问题更清楚,但这+=实际上让我感到困惑,这个答案包含了相关信息.

python tuples python-3.x

4
推荐指数
1
解决办法
519
查看次数

什么意思+ =在python中?

它是这样的意思是什么意思:

self.something += ('somethin',)
Run Code Online (Sandbox Code Playgroud)

"+ ="是什么,逗号是什么意思?

python syntax

3
推荐指数
3
解决办法
1万
查看次数

逗号分隔时Python枚举上的ValueError

考虑下面的代码。逗号分隔时,Python如何解释类​​RottenFruit?这合法吗?如果是,用例是什么?

from enum import Enum
class Fruit(Enum):
     Apple = 4
     Orange = 5
     Pear = 6 
a = Fruit(5)

class RottenFruit(Enum):
     Apple = 4,
     Orange = 5,
     Pear = 6
print(Fruit(5))
print(RottenFruit(5))
Run Code Online (Sandbox Code Playgroud)

输出:

Fruit.Orange
Traceback (most recent call last):
  File "...\tests\sandbox.py", line 15, in <module>
    print(RottenFruit(5))
  File "...\AppData\Local\Programs\Python\Python36\lib\enum.py", line 291, in __call__
    return cls.__new__(cls, value)
  File "...\AppData\Local\Programs\Python\Python36\lib\enum.py", line 533, in __new__
    return cls._missing_(value)
  File "...\AppData\Local\Programs\Python\Python36\lib\enum.py", line 546, in _missing_
    raise ValueError("%r is not a valid %s" % (value, cls.__name__))
ValueError: …
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
1
解决办法
446
查看次数

Scrapy - TypeError:“规则”对象不可迭代

我试图从这个网站上抓取标题(https://minerals.usgs.gov/science/mineral-deposit-database/#products)。我正在使用爬行蜘蛛,因为我打算稍后从页面中的每个网址获取更多信息!

但出现 TypeError: 'Rule' 对象不可迭代!这是我使用的代码:

import scrapy
import datetime
import socket
from scrapy.linkextractors import LinkExtractor
from scrapy.spiders import CrawlSpider, Rule
from usgs.items import MineralItem
from scrapy.loader import ItemLoader


class MineralSpider(CrawlSpider):
    name = 'mineral'
    allowed_domains = ['web']
    start_urls = 'https://minerals.usgs.gov/science/mineral-deposit- 
    database/#products'

    rules = (
        Rule(LinkExtractor(
            restrict_xpaths='//*[@id="products"][1]/p/a'),
            callback='parse')
    )

    def parse(self, response):
        it = ItemLoader(item=MineralItem(), response=response)
        it.add_xpath('name', '//*[@class="container"]/header/h1/text()')
        it.add_value('url', response.url)
        it.add_value('project', self.settings.get('BOT_NAME'))
        it.add_value('spider', self.name)
        it.add_value('server', socket.gethostname())
        it.add_value('date', datetime.datetime.now())
        return it.load_item()
Run Code Online (Sandbox Code Playgroud)

日志消息:

(base) C:\Users\User\Documents\Python WebCrawling Learing 
Projects\usgs\usgs\spiders>scrapy crawl mineral
2018-11-16 17:43:03 …
Run Code Online (Sandbox Code Playgroud)

typeerror scrapy web-scraping python-3.x

3
推荐指数
1
解决办法
3286
查看次数

Django 反向函数参数

我是 python 和 Django 的新手,正在尝试确定以下代码的工作方式:

return HttpResponseRedirect(reverse('poll_results', args=(p.id,)))
Run Code Online (Sandbox Code Playgroud)

特别是 reverse 函数的第二个参数。看起来它正在将 args 的参数设置为等于元组。为什么我需要一个额外的逗号?

python django

2
推荐指数
1
解决办法
524
查看次数

class __init__接受参数但由于某种原因将它们变成元组

我有一个非常简单的课程:

class Item(object):
    def __init__(self, guid, sku, name):
        self.guid = guid,
        self.sku = sku,
        self.name = name
Run Code Online (Sandbox Code Playgroud)

当我创建一个对象时,例如:

item1 = Item('abc123', 1, 'abc1')
Run Code Online (Sandbox Code Playgroud)

我这样做:

print item1.guid
Run Code Online (Sandbox Code Playgroud)

我得到这个输出:

('abc123',)
Run Code Online (Sandbox Code Playgroud)

而不是预期的:

'abc123'
Run Code Online (Sandbox Code Playgroud)

知道为什么会这样吗?

PS:name按预期工作!

python class

1
推荐指数
2
解决办法
425
查看次数

Django Model:int()参数必须是字符串,类字节对象或数字,而不是'元组'

我的models.py:

class Channel(models.Model):
    title = models.CharField(max_length=255)

    def snapshot_statistics(self):
        new_channel_stat = ChannelStatistic(channel=self)
        new_channel_stat.save()


class ChannelStatistic(models.Model):
    channel = models.ForeignKey(Channel, on_delete=models.CASCADE)
    view_count = models.IntegerField(default=0)

    def save(self, *args, **kwargs):
        self.view_count = 3,
        super(ChannelStatistic, self).save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)

当触发snapshot_stastistics()时,我收到以下错误:

int() argument must be a string, a bytes-like object or a number, not 'tuple'
Run Code Online (Sandbox Code Playgroud)

在django调试中,我可以看到:

values  
[(<django.db.models.fields.related.ForeignKey: channel>, None, 35),
 (<django.db.models.fields.IntegerField: view_count>, None, (3,)),
Run Code Online (Sandbox Code Playgroud)

django将我对3的赋值视为tupel的view_count属性.

这个行为的问题是什么?我怎么解决呢?

提前致谢!

python django

1
推荐指数
1
解决办法
1099
查看次数

如何将元组附加到列表中?

如何将元组附加到列表中?我正在尝试以下操作:

>>> a = []
>>> a.append(tuple((str("{0}".format(5000)))))
>>> a
[('5', '0', '0', '0')]
Run Code Online (Sandbox Code Playgroud)

预期输出为:

[('5000')]
Run Code Online (Sandbox Code Playgroud)

有人可以帮我解决这个问题吗?

python python-3.x

0
推荐指数
1
解决办法
127
查看次数

函数在不应该返回元组时返回元组

我正在使用 python 2.7,这是我所拥有的。

方法:

def get_phone(self):
    digits = filter(str.isdigit, str(self.phone))
    if re.match(r'(0|380)\d{9}', digits):
        operator = digits[-9:-7]
        digits = digits[-7:]
        return "+380 ({}) {}".format(opeself.rator, digits)
    return None
Run Code Online (Sandbox Code Playgroud)

现在,如果我像这样使用这种方法:

dictionary = {
    'phone': User.get_phone()
} 
Run Code Online (Sandbox Code Playgroud)

输出是:

{'phone': '+380 (12) 1234567'}
Run Code Online (Sandbox Code Playgroud)

但如果我像这样使用它:

dictionary['phone'] = User.get_phone(),
Run Code Online (Sandbox Code Playgroud)

输出变成一个元组:

{'phone': ('+380 (12) 1234567',)}
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

python

0
推荐指数
1
解决办法
42
查看次数

标签 统计

python ×10

python-3.x ×3

django ×2

syntax ×2

tuples ×2

class ×1

scrapy ×1

typeerror ×1

web-scraping ×1