相关疑难解决方法(0)

如何在 Python 中将字符串转换为十进制数以进行算术运算?

类似的帖子(例如以下内容)没有回答我的问题。 在Python中将字符串转换为带小数的整数

考虑以下 Python 代码。

>>> import decimal
>>> s = '23.456'
>>> d = decimal.Decimal(s)
>>> d
Decimal('23.456')           # How do I represent this as simply 23.456?
>>> d - 1
22                          # How do I obtain the output to be 22.456?
Run Code Online (Sandbox Code Playgroud)

如何将字符串转换为十进制数,以便能够对其执行算术函数并获得具有正确精度的输出?

python python-2.7

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

在Pythons内置数值类型上,repr和str总是相同吗?

reprstr相同的上内置数值类型蟒蛇(int,bool,float,和complex),还是有(深奥?)的情况,其中两个可能会产生不同的结果?

关于SO的相关问题(例如本文)关注的是如何__repr__以及__str__可能以不同方式实现,并为字符串返回不同的值,但我找不到关于数字的实际实现的任何内容.

python representation

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

Python-连接字符串以包含单个反斜杠

在Python 2.6中,我需要通过串联创建一个字符串,并通过INTRANET\一个userid jDoe来获得string INTRANET\jDoe。该字符串将成为SQL查询的一部分。我尝试了多种方法,但是最终得到了结果INTRANET\\jDoe,因此我的查询未返回任何结果。

我想做这个:

a = 'INTRANET\\'
b = 'jDoe'
c = a+b   ### want to get c as 'INTRANET\jDoe', not 'INTRANET\\jDoe'
Run Code Online (Sandbox Code Playgroud)

谢谢


问题似乎有些不同:

当我打印c时,得到“ INTRANET \ jDoe”。但是,当我将c附加到列表(将在sql查询中使用)时,如下所示:

list1 = []
list1.append(c)
print list1

>>>['INTRANET\\jDoe']
Run Code Online (Sandbox Code Playgroud)

为什么是这样 ?

python

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

在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 中打印元组(列表、字典等)时会加倍反斜杠?

在Python中,当我打印带有反斜杠的字符串时,它只打印一次反斜杠:

>>> print(r'C:\hi')
C:\hi
>>> print('C:\\hi')
C:\hi
Run Code Online (Sandbox Code Playgroud)

但我注意到,当您打印带有反斜杠的字符串元组时,它会打印双反斜杠:

>>> print((r'C:\hi', 'C:\\there'))
('C:\\hi', 'C:\\there')
Run Code Online (Sandbox Code Playgroud)

为什么打印元组时表现不同?

(请注意,这种情况在 Python 2 和 3 以及 Windows 和 Linux 中都会发生。)

python printing escaping backslash

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

向python中的变量添加换行符

我有以下功能来获得以下输出

22
4444
666666
Run Code Online (Sandbox Code Playgroud)

相反,我得到

'22\n4444\n666666\n88888888\n'
Run Code Online (Sandbox Code Playgroud)

我哪里出错了?

def EvenLadder(n):
    ...:     solution = ''
    ...:     if n <= 1:
    ...:         return solution
    ...:     elif n%2 ==0:
    ...:         for i in range(2,n+1,2):
    ...:             solution += (str(i)*i)+"\n"
    ...:     else:
    ...:         n = n - 1
    ...:         for i in range(2,n+1,2):    
    ...:             solution += (str(i)*i)+"\n"
    ...:     return solution
Run Code Online (Sandbox Code Playgroud)

python

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

python - 作为字符串的np数组变量的名称

我有这个代码:

我稍微重申了问题的表述.不确定礼仪是否要发布新问题.如果是这样,我的坏

import numpy as np
a = np.array([0,0])
b = np.array([1,0])
c = np.array([2,0])

my_array_list = [a,b,c]
for my_array in my_array_list:
    np.save('string_that is representative of my_array',my_array)
Run Code Online (Sandbox Code Playgroud)

其中'代表我的数组的字符串'等于'a','b','c'或类似字符.

可能有更好的方法来解决这个问题,我现在就想不出来.

快速有效地做到这一点的最佳方法是什么?

python arrays numpy

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

如何摆脱字符串表示周围的单引号?

此示例代码打印文件中一行的表示.它允许'\n'在一行中查看其内容,包括控制字符,因此我们将其称为行的"原始"输出.

print("%r" % (self.f.readline()))
Run Code Online (Sandbox Code Playgroud)

但是,输出显示的'是每个末尾添加的字符不在文件中.

'line of content\n'

如何摆脱输出周围的单引号?
(Python 2.7和3.6中的行为相同.)

python data-representation

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

如何正确实现 __str__ 和 __repr__

在我的几个类中,我想同时实现__str__和,__repr__并且通常以这样的代码结束:

class MyClass(object):
    def __init__(self, a):
        self.a = a

    def __str__(self):
        return 'MyClass({})'.format(self.a)

    def __repr__(self):
        return 'MyClass({!r})'.format(self.a)
Run Code Online (Sandbox Code Playgroud)

这符合我的期望:

>>> myobject = MyClass(np.array([1, 2]))
>>> str(myobject)
'MyClass([1 2])'
>>> repr(myobject)
'MyClass(array([1, 2]))'
Run Code Online (Sandbox Code Playgroud)

然而,代码违反了 DRY,随着参数数量开始增加,维护这变得很麻烦,我经常发现其中一个__str____repr__已经与另一个“不同步”。

是否有同时实现这两个更好的办法__str__,并__repr__没有重复?

python

5
推荐指数
2
解决办法
2341
查看次数

json 转储转义字符

我在转义字符和 json.dumps 方面遇到了一些问题。

每当调用 json.dumps 时,似乎都会添加额外的转义字符。例子:

not_encoded = {'data': '''!"#$%'()*+,-/:;=?@[\]^_`{|}~0000&<>'''}
print(not_encoded)
{'data': '!"#$%\'()*+,-/:;=?@[\\]^_`{|}~0000&<>'}
Run Code Online (Sandbox Code Playgroud)

这很好,但是当我进行 json 转储时,它会添加很多额外的值。

json.dumps(not_encoded)
'{"data": "!\\"#$%\'()*+,-/:;=?@[\\\\]^_`{|}~0000&<>"}'
Run Code Online (Sandbox Code Playgroud)

转储不应该是这个样子。它是双重转义 \ 和 "。任何人都知道这是为什么以及如何修复它?我希望 json.dumps 输出

'{"data": "!\"#$%'()*+,-/:;=?@[\\]^_`{|}~0000&<>"}'
Run Code Online (Sandbox Code Playgroud)

编辑

加载回转储中:

the_dump = json.dumps(not_encoded)
json.loads(the_dump)
{u'data': u'!"#$%\'()*+,-/:;=?@[\\]^_`{|}~0000&<>'}
Run Code Online (Sandbox Code Playgroud)

问题是我正在访问一个需要这些特殊字符的 API 端点,但当 json.dumps 添加额外的转义字符 (\\\\\\") 时,它会超出字符限制。

python json python-2.7

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