小编Bri*_*ian的帖子

在尝试修改单个值时,2D列表具有奇怪的行为

可能重复:
Python列表中的意外功能

所以我对Python比较新,我在使用2D列表时遇到了麻烦.

这是我的代码:

data = [[None]*5]*5
data[0][0] = 'Cell A1'
print data
Run Code Online (Sandbox Code Playgroud)

这是输出(为便于阅读而格式化):

[['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None],
 ['Cell A1', None, None, None, None]]
Run Code Online (Sandbox Code Playgroud)

为什么每一行都被分配了值?

python 2d list python-2.7

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

Django ManyToManyField使用直通订购

以下是我的模型设置的片段:

class Profile(models.Model):     
    name = models.CharField(max_length=32)

    accout = models.ManyToManyField(
        'project.Account',
        through='project.ProfileAccount'
    )

    def __unicode__(self)
        return self.name

class Accounts(models.Model):
    name = models.CharField(max_length=32)
    type = models.CharField(max_length=32)

    class Meta:
        ordering = ('name',)

    def __unicode__(self)
        return self.name

class ProfileAccounts(models.Model):
    profile = models.ForeignKey('project.Profile')
    account = models.ForeignKey('project.Accounts')

    number = models.PositiveIntegerField()

    class Meta:
        ordering = ('number',)
Run Code Online (Sandbox Code Playgroud)

然后,当我访问帐户时,如何在中间ProfileAccounts模型中按"数字"排序,而不是在帐户模型中使用默认的"名称"?

for acct_number in self.profile.accounts.all():
    pass
Run Code Online (Sandbox Code Playgroud)

这不起作用,但是我希望它如何访问这些数据的要点:

for scanline_field in self.scanline_profile.fields.all().order_by('number'):
    pass
Run Code Online (Sandbox Code Playgroud)

python django many-to-many

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

使用Python中的xlrd将数字Excel数据作为文本读取

我正在尝试使用xlrd读取Excel文件,我想知道是否有办法忽略Excel文件中使用的单元格格式,并只是将所有数据导入为文本?

这是我正在使用的代码:

import xlrd

xls_file = 'xltest.xls'
xls_workbook = xlrd.open_workbook(xls_file)
xls_sheet = xls_workbook.sheet_by_index(0)

raw_data = [['']*xls_sheet.ncols for _ in range(xls_sheet.nrows)]
raw_str = ''
feild_delim = ','
text_delim = '"'

for rnum in range(xls_sheet.nrows):
    for cnum in range(xls_sheet.ncols):
        raw_data[rnum][cnum] = str(xls_sheet.cell(rnum,cnum).value)

for rnum in range(len(raw_data)):
    for cnum in range(len(raw_data[rnum])):
        if (cnum == len(raw_data[rnum]) - 1):
            feild_delim = '\n'
        else:
            feild_delim = ','
        raw_str += text_delim + raw_data[rnum][cnum] + text_delim + feild_delim

final_csv = open('FINAL.csv', 'w')
final_csv.write(raw_str)
final_csv.close()
Run Code Online (Sandbox Code Playgroud)

此代码是有效的,但是某些字段(例如邮政编码)作为数字导入,因此它们具有十进制零后缀.例如,Excel文件中是否有"79854"的邮政编码,它将导入为"79854.0".

我试过在这个xlrd规范中找到一个解决方案,但是没有成功.

python csv excel xls xlrd

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

如何将Python StringIO()对象传递给ZipFile(),还是不受支持?

所以我有一个StringIO()类似文件的对象,我正在尝试将其写入a ZipFile(),但是我得到了这个TypeError:

coercing to Unicode: need string or buffer, cStringIO.StringI found
Run Code Online (Sandbox Code Playgroud)

以下是我正在使用的代码示例:

file_like = StringIO()
archive = zipfile.ZipFile(file_like, 'w', zipfile.ZIP_DEFLATED)

# my_file is a StringIO object returned by a remote file storage server.
archive.write(my_file)
Run Code Online (Sandbox Code Playgroud)

文档说这StringIO()是一个类文件类,ZipFile()可以接受类文件对象.有什么我想念的吗?任何帮助将不胜感激.

提前致谢!

python zipfile stringio

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

使用DirectX或OpenGL的C#2D矢量图形游戏?

因为我已经用C#做过任何游戏编程已经有一段时间了,但我最近有一个错误要回到它,我想要一些关于我应该使用什么配置的意见.

我想使用C#,因为这是我用于工作的东西,并且变得熟悉.我过去曾使用DirectX和OpenGL,但主要是使用3D,但现在我有兴趣编写一个带有所有矢量图形的2D游戏,类似于几何战争或旧星球大战街机游戏的外观.

我感兴趣的要点:
•易于使用/实施.
•易于记忆.(我计划一次进行很多事情)
•看起来不错,我不希望曲线看起来像素化.
•也许一些很好的效果,如发光或粒子.

我对所有建议持开放态度,甚至可能是我没有想过的东西......

提前致谢!

c# opengl directx vector

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

如何覆盖Python当前正在读取的文件

我不太确定说出这个的最佳方式,但我想做的是读取pdf文件,进行各种修改,并将修改后的pdf保存在原始文件上.截至目前,我能够将修改后的pdf保存到单独的文件中,但我希望替换原始文件,而不是创建新文件.

这是我目前的代码:

from pyPdf import PdfFileWriter, PdfFileReader

output = PdfFileWriter()
input = PdfFileReader(file('input.pdf', 'rb'))
blank = PdfFileReader(file('C:\\BLANK.pdf', 'rb'))

# Copy the input pdf to the output.
for page in range(int(input.getNumPages())):
    output.addPage(input.getPage(page))

# Add a blank page if needed.
if (input.getNumPages() % 2 != 0):
    output.addPage(blank.getPage(0))

# Write the output to pdf.
outputStream = file('input.pdf', 'wb')
output.write(outputStream)
outputStream.close()
Run Code Online (Sandbox Code Playgroud)

如果我更改outputStream为不同的文件名,它工作正常,我只是不能保存输入文件,因为它仍在使用.我试过.close()了流,但它也给了我错误.

我觉得这有一个相当简单的解决方案,我没有找到任何运气.

谢谢!

python pdf input overwrite

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

标签 统计

python ×5

2d ×1

c# ×1

csv ×1

directx ×1

django ×1

excel ×1

input ×1

list ×1

many-to-many ×1

opengl ×1

overwrite ×1

pdf ×1

python-2.7 ×1

stringio ×1

vector ×1

xlrd ×1

xls ×1

zipfile ×1