类似的帖子(例如以下内容)没有回答我的问题。 在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)
如何将字符串转换为十进制数,以便能够对其执行算术函数并获得具有正确精度的输出?
是repr与str相同的上内置数值类型蟒蛇(int,bool,float,和complex),还是有(深奥?)的情况,其中两个可能会产生不同的结果?
关于SO的相关问题(例如本文)关注的是如何__repr__以及__str__可能以不同方式实现,并为字符串返回不同的值,但我找不到关于数字的实际实现的任何内容.
在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)
为什么是这样 ?
我的代码看起来像:
# -*- 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中,当我打印带有反斜杠的字符串时,它只打印一次反斜杠:
>>> 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 中都会发生。)
我有以下功能来获得以下输出
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) 我有这个代码:
我稍微重申了问题的表述.不确定礼仪是否要发布新问题.如果是这样,我的坏
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'或类似字符.
可能有更好的方法来解决这个问题,我现在就想不出来.
快速有效地做到这一点的最佳方法是什么?
此示例代码打印文件中一行的表示.它允许'\n'在一行中查看其内容,包括控制字符,因此我们将其称为行的"原始"输出.
print("%r" % (self.f.readline()))
Run Code Online (Sandbox Code Playgroud)
但是,输出显示的'是每个末尾添加的字符不在文件中.
'line of content\n'
如何摆脱输出周围的单引号?
(Python 2.7和3.6中的行为相同.)
在我的几个类中,我想同时实现__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__没有重复?
我在转义字符和 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 添加额外的转义字符 (\\\\和\\") 时,它会超出字符限制。