小编CDJ*_*DJB的帖子

使用用户输入启动类的新对象

我试图让用户输入输入新学生的详细信息,然后使用新的详细信息创建一个新的类对象,并调用 print_details 方法来显示新学生的详细信息。有人能指出我正确的方向吗?

class Student:
    def __init__(self, name, age, course, ID):
        self.name = name
        self.age = age
        self.course = course
        self.ID = ID

    def print_details(self):
        print("Name: " + self.name)
        print("Age: " + str(self.age))
        print("Course: " + self.course)
        print("Student ID: " + self.ID)

student1 = Student("Bob", 20, "Computer Science","1000121")
student2 = Student("Alice", 21, "Computer Science", "1000475")
student3 = Student("Jane", 18, "Information Technology", "1000823")
student1.print_details()
student2.print_details()
student3.print_details()
Run Code Online (Sandbox Code Playgroud)

python oop class input python-3.x

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

f 字符串表达式中的类型错误 - “str”对象不可调用

当我尝试在 Python 3.7 中使用 f-string 语法组合字符串时出现错误。

我的代码如下:

i = 1

site_id= 0
meter = 0
model_id = i
target_name = 'log1p_meter_reading_corrected2'

f'model_site_id_{str(site_id)}_meter_{str(meter)}_{target_name}_model_id_{str(model_id)}_11_12_19.hdf5'
Run Code Online (Sandbox Code Playgroud)

返回错误:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-68-1ebe1c78d868> in <module>
      6 target_name = 'log1p_meter_reading_corrected2'
      7 
----> 8 f'model_site_id_{str(site_id)}_meter_{str(meter)}_{target_name}_model_id_{str(model_id)}_11_12_19.hdf5'

TypeError: 'str' object is not callable
Run Code Online (Sandbox Code Playgroud)

是什么导致了错误,我应该如何更正我的代码?

python string typeerror python-3.x f-string

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

将数字拆分为所有可能的数字组,保持原始顺序

我有一个数字,我想按如下所示进行拆分。我想保持数字存在的顺序,但由此产生的列表必须保持数字的原始顺序。

我拥有的数字是 3147,可以按如下所示进行拆分。3147可以拆分为31、47或3、1、47等,但不能丢失原数的顺序。

那么我该如何实现呢?

最好是用 Python 得到答案,但用任何其他语言也可以。

Input
3147

Output

[3,1,4,7]
[3,147]
[3,1,47]
[31,4,7]
[31,47]
etc
Run Code Online (Sandbox Code Playgroud)

python integer list permutation python-3.x

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

从一个列表中提取与包含在第三个列表中的另一个列表的项具有相同索引的值

我想知道我是否可以在 2 个列表中识别相似值的位置,并使用在第三个列表中识别值的位置。

v= [100,200,300,400,500,600,700,800,900,1000,1100]
x= [67,56,89,21,90,54,38,93,46,17,75]
j= [200,500,600]
Run Code Online (Sandbox Code Playgroud)

我要代码识别j的值可以在v[1]、v[4]和v[5]中找到,并利用v[1]、v[4]和v[5]的位置得到/ 返回 x[1]、x[4] 和 x[5] 的值。到目前为止,我已经尝试过:

h = set(v)&set(j) 
print(h)
Run Code Online (Sandbox Code Playgroud)

python for-loop list set python-3.x

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

使用 Faker 返回一个范围之间的假年份?

我正在尝试使用 Faker 创建一些从 1800 年到 1900 年范围内的假年份(只是年份而不是日期)。

我已经阅读了有关假日期和年份的文档,看起来 Faker.year() 是前进的方向。但是,没有关于向 .year() 添加范围的文档。目前,它仅输出 1970 年后的内容。

python random date range faker

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

如何使用自定义字母集进行 Base64 编码?

我正在尝试使用 python3 中的自定义字符集进行 Base64 编码。我在 SO 中看到的大多数示例都与 Python 2 相关,因此我不得不对代码进行一些细微的调整。我面临的问题是我正在用 替换字符/_但它仍然用 打印/。我的代码是:这只是一个示例,我不尝试仅使用 urlsafe 字符进行 base64。custom可以是任何具有正确长度的东西。

import base64

data = 'some random? data'
print(base64.b64encode(data.encode()))

std_base64chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
custom = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_"

data = data.translate(str.maketrans(custom, std_base64chars)).encode()

print(base64.b64encode(data))

# Both prints
b'c29tZSByYW5kb20/IGRhdGE='
b'c29tZSByYW5kb20/IGRhdGE='
Run Code Online (Sandbox Code Playgroud)

如何使翻译正常工作,以便将出现的/正确替换为_

编辑

我应该明确的是,我并不是试图在这里只进行一种类型的 Base64 编码(例如 urlsafe),而是尝试任何可能的字符集。这将是一个用户可以传递自己的字符集的函数。我正在寻找逐个字符的映射,而不是字符串切片。

编辑

由于我的问题的清晰度存在一些混乱,因此我尝试添加更多细节。

我正在尝试编写一个函数,该函数可以从用户处获取任意字符集,然后在 Base64 编码之前单独映射它们。大多数答案都是围绕操作altchars或字符串切片和替换,但这并不能解决所有需求。

例如,itoa64 字符集是: ./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz=或 unix crypt 格式是./0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz。答案虽然正确,但没有解决这些情况。

python string base64 encoding python-3.x

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

如何将输入数据结构保留在 for 循环中?

我有一个元组列表,如下所示:

l = [('xx-1711640.html', 'Hello'), 
     ('xx-8411747.html', 'Bye')
    ]
Run Code Online (Sandbox Code Playgroud)

实际的列表有数千个条目。现在我想对元组使用正则表达式。为此,我有一个 for 循环。另外,我希望输出也是元组列表。

我的代码:

ret = []
for line in l:
    for i in line:
        try:
            reg = re.sub(r'.+-', '', i)
            ret.append(reg)
        except:
            print(line)
Run Code Online (Sandbox Code Playgroud)

然而,使用这段代码,我的输出如下所示:

ret = ['1711640.html', 'Hello', '8411747.html', 'Bye']
Run Code Online (Sandbox Code Playgroud)

当我希望它看起来像这样时:

ret = [('1711640.html', 'Hello'), ('8411747.html', 'Bye')]
Run Code Online (Sandbox Code Playgroud)

我怎样才能正确地做到这一点?

python regex tuples list python-3.x

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

如何增加 pandas 系列中截断显示的行数

在终端中,我pd.options.display.max_rows设置为 60。但是对于超过 60 行的系列,显示内容会被截断为仅显示 10 行。如何增加显示的截断行数?

例如,以下内容(在max_rows设置范围内)显示 60 行数据:

s = pd.date_range('2019-01-01', '2019-06-01').to_series()
s[:60]
Run Code Online (Sandbox Code Playgroud)

但如果我要求 61 行,它会被严重截断:

In [44]: s[:61]
Out[44]:
2019-01-01   2019-01-01
2019-01-02   2019-01-02
2019-01-03   2019-01-03
2019-01-04   2019-01-04
2019-01-05   2019-01-05
                ...
2019-02-26   2019-02-26
2019-02-27   2019-02-27
2019-02-28   2019-02-28
2019-03-01   2019-03-01
2019-03-02   2019-03-02
Freq: D, Length: 61, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)

我怎样才能设置它,以便每次超出限制时我都能看到 20 行max_rows

python printing console series pandas

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

如何搜索字符串并提取所有特定字符?

所以说我有一个类似于“One2three4”的字符串。我是否可以查看字符串并取整数并将它们放入自己的字符串中,所以我的最终结果将是“24”。谢谢

python string integer character python-3.x

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

检查字典值是否包含列表项

我有一个字典,它有一个键(一个两位数的前缀)和一个值(一个字符串列表)。它看起来像这样:

prefixes = {
    "AC" : ["england-wales"],
    "OC" : ["england-wales", "wales"],
    "SC" : ["scotland"],
    "NC" : ["northern-ireland"]
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试创建一个前缀列表,其中的值包含列表中提供的区域。

通过的区域可以是一个或多个区域,例如:

regions = ['england-wales', 'wales']
Run Code Online (Sandbox Code Playgroud)

因此,上述数据我想创建一个新的列表名为前缀,它将包含所有的前缀,其中无论是“威尔士”或“英格兰威尔士”包含在值:

prefix_list = ['AC', 'OC']
Run Code Online (Sandbox Code Playgroud)

而如果 region 刚好等于 'wales' 那么:

prefix_list = ['OC']
Run Code Online (Sandbox Code Playgroud)

我玩了一些东西,让这个凌乱的解决方案起作用:

combo_list = []
prefix_list = []

for r in regions:
    combo_list.append([k for k, v in prefixes.items() if r in v])

for sublist in combo_list:
    for i in sublist:
        prefix_list.append(i)

prefix_list = sorted(set(prefix_list)) #This will remove duplicates for me
Run Code Online (Sandbox Code Playgroud)

我认为必须有一种更好、更“清洁”的方式来做到这一点,但无法完全弄清楚。任何帮助表示赞赏。

python dictionary for-loop list-comprehension list

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