相关疑难解决方法(0)

在Python中打印包含中文字符的列表

我的代码看起来像:

# -*- coding: utf-8 -*-

print ["asdf", "??"]
print ["??"]
print "??"
Run Code Online (Sandbox Code Playgroud)

Eclipse控制台中的输出非常奇怪:

['asdf', '\xe4\xb8\xad\xe6\x96\x87']
['\xe4\xb8\xad\xe6\x96\x87']
??
Run Code Online (Sandbox Code Playgroud)

我的第一个问题是:为什么最后一行得到正确的输出,而其他的没有?

我的第二个问题是:如何纠正错误的(使它们输出真实的字符而不是以"x"开头的代码)

感谢你们!!

python utf-8 character-encoding codepages gbk

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

Python中的尖括号

我想使用Scapy制作数据包。浏览IP()类成员时,遇到了以下代码惯用法:

'fieldtype': {

    'frag': <Field (IP,IPerror).frag>, 
    'src': <Field (IP,IPerror).src>, 
    'proto': <Field (IP,IPerror).proto>, 
    'tos': <Field (IP,IPerror).tos>, 
    'dst': <Field (IP,IPerror).dst>, 
    'chksum': <Field (IP,IPerror).chksum>, 
    'len': <Field (IP,IPerror).len>, 
    'options': <Field (IP,IPerror).options>, 
    'version': <Field (IP,IPerror).version>, 
    'flags': <Field (IP,IPerror).flags>, 
    'ihl': <Field (IP,IPerror).ihl>, 
    'ttl': <Field (IP,IPerror).ttl>, 
    'id': <Field (IP,IPerror).id>}, 
    'time': 1465637588.477862, 
    'initialized': 1, 
    'overloaded_fields': {},
Run Code Online (Sandbox Code Playgroud)

我对Python比较陌生。有人可以向我解释尖括号在每种字段类型定义中的作用是什么?

我一直在尝试使用以下文档自己弄清楚这一点,但完全被卡住了。

Scapy 2.3.1

谢谢

python scapy

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

如何让这个测试通过?

我正在尝试测试返回类型__repr__.它不是一个字符串,它是什么?这里发生了什么事?

import unittest
class MyClass(unittest.TestCase):
    class Dog(object):
            def __init__(self, initial_name):
                self._name = initial_name

            def get_self(self):
                return self

            def __repr__(self):
                return "Dog named '" + self._name + "'"

    def runTest(self):
        fido = self.Dog("Fido")
        self.assertEqual("Dog named 'Fido'", fido.get_self()) #Fails!

test=MyClass("runTest")
runner=unittest.TextTestRunner()
runner.run(test)
Run Code Online (Sandbox Code Playgroud)

运行这个给出:

FAIL: runTest (__main__.MyClass)
----------------------------------------------------------------------
Traceback (most recent call last):
   File "/home/xxxxx/fido.py", line 15, in runTest
     self.assertEqual("Dog named 'Fido'", fido.get_self())
   AssertionError: "Dog named 'Fido'" != Dog named 'Fido'

 ----------------------------------------------------------------------
 Ran 1 test in 0.006s

 FAILED (failures=1)
Run Code Online (Sandbox Code Playgroud)

我怎样才能通过这项测试?

python unit-testing

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

Python(奇怪的是)舍入值

这个问题更多的是好奇心.

我正在创建以下数组:

A = zeros((2,2))
for i in range(2):
    A[i,i] = 0.6
    A[(i+1)%2,i] = 0.4
print A

>>>
   [[ 0.6  0.4]
   [ 0.4  0.6]]
Run Code Online (Sandbox Code Playgroud)

然后,打印它:

for i,c in enumerate(A):
    for j,d in enumerate(c):
        print j, d
Run Code Online (Sandbox Code Playgroud)

但是,如果我删除j,我得到:

>>>
0 0.6
1 0.4
0 0.4
1 0.6
Run Code Online (Sandbox Code Playgroud)

但如果我从for中删除j,我得到:

(0, 0.59999999999999998)
(1, 0.40000000000000002)
(0, 0.40000000000000002)
(1, 0.59999999999999998)
Run Code Online (Sandbox Code Playgroud)

这是因为我用0.6创建矩阵的方式?它如何代表内部真实价值?

python floating-point numpy

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

如何避免Python中的L

>>> sum(range(49999951,50000000))
  2449998775L
Run Code Online (Sandbox Code Playgroud)

有没有办法避免数字末尾的L?

python numbers python-2.7

4
推荐指数
2
解决办法
1112
查看次数

__str__输出"0x00E4F558处的实例"

这是我第一次在这个网站上寻求帮助.我在这里寻找答案,但没有什么能真正为我清除.

我正在努力学习Python.我在"课堂"一章.以下代码:

class Character:
    def __init__(self, name, initial_health):
        self.name = name
        self.health = initial_health
        self.inventory = []

    def __str__(self):
        s  = "Name: " + self.name
        s += "| Health: " + str(self.health)
        s += "| Inventory: " + str(self.inventory)
        return s

    def grab(self, item):
        self.inventory.append(item)

me = Character("vic", 37)
me.grab("pencil")
me.grab("paper")
print str(me)
Run Code Online (Sandbox Code Playgroud)

...生产:

Name: vic| Health: 37| Inventory: ['pencil', 'paper']
Run Code Online (Sandbox Code Playgroud)

但是下面的代码,在我看来非常相似,打印出内存位置而不是变量本身:

import random
SUITS = ['C', 'S', 'H', 'D']
RANKS = ['A', '2', '3', '4', '5', '6', '7', '8', …
Run Code Online (Sandbox Code Playgroud)

python string

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

如何让Python类返回一些数据而不是它的对象地址

语境:

使用以下内容:

class test:
    def __init__(self):
        self._x = 2

    def __str__(self):
        return str(self._x)

    def __call__(self):
        return self._x
Run Code Online (Sandbox Code Playgroud)

然后用.创建一个实例 t = test()

我看到如何__str__用于打印:

>>> print t
2
Run Code Online (Sandbox Code Playgroud)

我可以看到如何使用可调用的对象 __call__

>>> t()
2
Run Code Online (Sandbox Code Playgroud)

但是如何让对象返回一个内部属性,以便在输入时:

>>> t
2
Run Code Online (Sandbox Code Playgroud)

代替:

<__main__.test instance at 0x000000000ABC6108>
Run Code Online (Sandbox Code Playgroud)

以类似的方式Pandas打印出DataFrame对象.

python oop methods representation pandas

4
推荐指数
2
解决办法
100
查看次数

编写repr方法

情况:我是python的新手,目前正在尝试学习绳索,我试图创建一个链接列表类,以帮助更好地理解该语言及其结构。我知道该__repr__函数基本上应该返回与相同的东西,__str__但是我不确定实际的区别是什么。

到目前为止,这是我的课程:

class LinkedList:
    class Node:
        def __init__(self, val, prior=None, next=None):
            self.val = val
            self.prior = prior
            self.next  = next

    def __init__(self):
        self.head = LinkedList.Node(None) 
        self.head.prior = self.head.next = self.head 
        self.length = 0

    def __str__(self):
        """Implements `str(self)`. Returns '[]' if the list is empty, else
        returns `str(x)` for all values `x` in this list, separated by commas
        and enclosed by square brackets. E.g., for a list containing values
        1, 2 and 3, returns '[1, 2, 3]'.""" …
Run Code Online (Sandbox Code Playgroud)

python repr

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

为什么在打印时\ n仅在f字符串中起作用?

我正在为python / pandas做学校作业,想尝试一下f字符串,因为这似乎是非常方便的格式化方式。

阅读文档后,我意识到我无法使用\ n格式化输出。对于此代码:

    f"Shape of dataset:\n {df.shape} (rows, columns)\n"
Run Code Online (Sandbox Code Playgroud)

我得到以下输出:

    f"Shape of dataset:\n {df.shape} (rows, columns)\n"
Run Code Online (Sandbox Code Playgroud)

阅读文档后,这正是我所期望的。

但是,当我用包围时print(),如下所示:

print(f"Shape of dataset:\n {df.shape} (rows, columns)\n")
Run Code Online (Sandbox Code Playgroud)

我以我想要的方式找到它:

Out[38]: 'Shape of dataset:\n (270792, 11) (rows, columns)\n'
Run Code Online (Sandbox Code Playgroud)

我知道我也可以使用常规格式,但是我很好奇为什么这样做。是因为f字符串组件被忽略了print吗?

python f-string

4
推荐指数
2
解决办法
110
查看次数

通用或pythonic __repr__ 方法

我通常会写一个 a__repr__作为展示如何重新创建实例的方式。例如:

class Component:
    def __init__(self, start, end):
        self.start = start
        self.end = end
    def __repr__(self):
        return f'{self.__class__.__name__}(start={self.start}, end={self.end})'
Run Code Online (Sandbox Code Playgroud)

是否有一种“标准”的方式来编写__repr__,如果没有,是否有关于如何编写的建议选项/最佳实践,或者它完全是主观的?

python repr python-3.x

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