相关疑难解决方法(0)

如何每3个索引切一个字符串?

我正在使用Python为我工作的实验室编程.如何切出给定字符串中的每3个字符并将其附加到列表中?

即XXXxxxXXXxxxXXXxxxXXXxxxXXX(其中X或x是任何给定的字母)

string = 'XXXxxxXXXxxxXXXxxxXXXxxxXXX'
mylist = []

for x in string:
    string[?:?:?]
    mylist.append(string)
Run Code Online (Sandbox Code Playgroud)

我希望列表看起来像这样:['XXX','xxx','XXX','xxx','XXX'......等等]

有任何想法吗?

python string slice

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

如何为Python迭代器编写寻呼机?

我正在寻找一种"浏览"Python迭代器的方法.也就是说,我想将一个给定的迭代器iterpage_size与另一个迭代器包装起来,该迭代器将把它作为一系列"页面"从iter返回.每个页面本身都是一个迭代器,最多包含page_size迭代.

我查看了itertools,我看到的最接近的是itertools.islice.在某些方面,我想要的是与itertools.chain相反- 而不是将一系列迭代器链接到一个迭代器中,我想将迭代器分解为一系列较小的迭代器.我期待在itertools中找到一个分页功能,但找不到.

我想出了以下的传呼器类和演示.

class pager(object):
    """
    takes the iterable iter and page_size to create an iterator that "pages through" iter.  That is, pager returns a series of page iterators,
    each returning up to page_size items from iter.
    """
    def __init__(self,iter, page_size):
        self.iter = iter
        self.page_size = page_size
    def __iter__(self):
        return self
    def next(self):
        # if self.iter has not been exhausted, return the next slice
        # I'm using …
Run Code Online (Sandbox Code Playgroud)

python iterator python-itertools

9
推荐指数
2
解决办法
2538
查看次数

从Python列表中获取n个项目组的惯用方法?

给出一个清单

A = [1 2 3 4 5 6]
Run Code Online (Sandbox Code Playgroud)

是否有任何惯用(Pythonic)方式迭代它就好像它一样

B = [(1, 2) (3, 4) (5, 6)]
Run Code Online (Sandbox Code Playgroud)

索引除外?感觉就像C的延续:

for a1,a2 in [ (A[i], A[i+1]) for i in range(0, len(A), 2) ]:
Run Code Online (Sandbox Code Playgroud)

我不禁觉得应该有一些聪明的黑客使用itertools或切片或其他东西.

(当然,一次两个只是一个例子;我想要一个适用于任何n的解决方案.)

编辑:在Python中一次迭代字符串2(或n)个字符,但即使是最干净的解决方案(使用zip接受)也不能很好地推广到更高的n而没有列表理解和*-notation.

python iteration

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

如何拆分每个第N个元素的Python列表

我想要做的很简单,但我找不到怎么做.

  • 从1st元素开始,将每个第4个元素放入新列表中.
  • 重复第2,第3和第4个元素.

从:

list = ['1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b']
Run Code Online (Sandbox Code Playgroud)

至:

list1 = ['1', '5', '9']
list2 = ['2', '6', 'a']
list3 = ['3', '7', 'b']
list4 = ['4', '9']
Run Code Online (Sandbox Code Playgroud)

换句话说,我需要知道如何:

  • 从列表中获取第N个元素(在循环中)
  • 将其存储在新阵列中
  • 重复

python arrays split loops list

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

PPM图像到Python中的ASCII艺术

我必须创建一个程序,从命令行读取文件并将其转换为ASCII艺术.我使用的是PPM格式,这里是项目的链接.

这是我到目前为止:

import sys

def main(filename):
    image = open(filename)
    #reads through the first three lines
    color = image.readline().splitlines()
    size_width, size_height = image.readline().split()
    max_color = image.readline().splitlines()

    #reads the body of the file
    pixels = image.read().split()
    red = 0
    green = 0
    blue = 0
    r_g_b_value = []
    #pulls out the values of each tuple and coverts it to its grayscale value 
    for i in pixels:
        if i !=  "\n" or " ":
            if len(i) == 3:
                red = int(i[0]) …
Run Code Online (Sandbox Code Playgroud)

python ascii-art python-3.x

8
推荐指数
2
解决办法
9908
查看次数

在python中从字符串中获取两个字符

如何从字符串中获取python而不是一个字符,而是两个?

我有:

long_str = 'abcd'
for c in long_str:
   print c
Run Code Online (Sandbox Code Playgroud)

它让我喜欢

a
b
c
d
Run Code Online (Sandbox Code Playgroud)

但我需要得到

ab
cd
Run Code Online (Sandbox Code Playgroud)

我是python中的新手..有什么办法吗?

python loops for-loop character

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

pandas.DataFrame.to_sql的进度条

我想将数据从大型csv文件迁移到sqlite3数据库.

我使用pandas在Python 3.5上的代码:

con = sqlite3.connect(DB_FILENAME)
df = pd.read_csv(MLS_FULLPATH)
df.to_sql(con=con, name="MLS", if_exists="replace", index=False)
Run Code Online (Sandbox Code Playgroud)

是否可以打印执行to_sql方法的当前状态(进度条)?

我查看了关于tqdm的文章,但没有找到如何做到这一点.

python sqlite dataframe pandas tqdm

6
推荐指数
2
解决办法
4132
查看次数

如何使用izip_longest取消代码以列出一个列表?

最好的答案是什么是以块为单位迭代列表的最"pythonic"方式?使用函数izip_longest来分块列表.但我无法理解.

def grouper(iterable, n, fillvalue=None):
    args = [iter(iterable)] * n
    return izip_longest(*args, fillvalue=fillvalue)

for item in grouper(range(10), 4):
    print list(item)
Run Code Online (Sandbox Code Playgroud)

我运行上面的代码,然后创建分块列表:

[1 ,2, 3, 4]
[5, 6, 7, 8]
[9, 10, None, None]
Run Code Online (Sandbox Code Playgroud)

我试着一步一步地运行它:

In [1]: args = [iter(range(10))] * 4

In [2]: args
Out[2]: 
[<listiterator at 0x1ad7610>,
 <listiterator at 0x1ad7610>,
 <listiterator at 0x1ad7610>,
 <listiterator at 0x1ad7610>]
Run Code Online (Sandbox Code Playgroud)

列表由同一个迭代器创建.我知道实现了izip_longest函数来生成列表对.如何通过izip_longest将迭代器转换为分块列表?谢谢.

python iterator list python-itertools

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

Pythonic方式生成字符串旋转

考虑一个字符串'1234'.你需要一个能产生所有旋转的功能:'1234', '3412', '4123', '2341'.我创建了一个简单的测试套件:

assert rotations('123') == set(['123', '231', '312'])
assert rotations('111') == set(['111'])
assert rotations('197') == set(['197', '971', '719'])
Run Code Online (Sandbox Code Playgroud)

什么是pythonic方式呢?我完成了下面的代码

def rotations(num):
    str_num = str(num)
    result = set()
    for mid in xrange(len(str_num)):
        result.add(
            str_num[mid:] + str_num[:mid]
        )
    return result
Run Code Online (Sandbox Code Playgroud)

python python-2.7

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

在Python中将二进制文件读入结构

我有一个已知格式/结构的二进制文件.

如何将所有二进制数据读入结构数组?

像(在伪代码中)

bytes = read_file(filename)
struct = {'int','int','float','byte[255]'}
data = read_as_struct(bytes, struct)
data[1]
>>> 10,11,10.1,Arr[255]
Run Code Online (Sandbox Code Playgroud)

编辑:

目前解决方案:

data = []

fmt   = '=iiiii256i'
fmt_s = '=iiiii'
fmt_spec = '256i'

struct_size = struct.calcsize(fmt)

for i in range(struct_size, len(bytes)-struct_size, struct_size):
    dat1= list(struct.unpack(fmt_s, bytes[i-struct_size:i-1024]))
    dat2= list(struct.unpack(fmt_spec, bytes[i-1024:i]))
    dat1.append(dat2)
    data.append(dat1)
Run Code Online (Sandbox Code Playgroud)

python binaryfiles

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