当前位置: 首页 > 面试题库 >

将字符串拆分为固定长度的块并在Python中使用它们的最佳方法是什么?

郑声
2023-03-14
问题内容

我正在使用以下内容从文本文件中读取一行:

   file = urllib2.urlopen("http://192.168.100.17/test.txt").read().splitlines()

并使用telnetlib.write命令将其输出到16个字符的LCD显示屏。如果读取的行长于16个字符,我想将其分解为16个字符长的字符串,并在一定的延迟(例如10秒)后将每个部分推出,一旦完成,代码应移至下一行输入文件,然后继续。

我曾尝试搜索各种解决方案并阅读itertools等。但是,我对Python的理解不足以使所有事情变得复杂,而如果使用if then
else可能会引起混乱的混乱状态,那是一种非常漫长的方式把我绑在一起!

对我来说,做我想做的最好的方法是什么?


问题答案:

一种解决方案是使用此功能

def chunkstring(string, length):
    return (string[0+i:length+i] for i in range(0, len(string), length))

此函数使用生成器理解来返回生成器。生成器返回从0 +块的长度的倍数到块的长度+块的长度的倍数切片的字符串。

您可以像列表,元组或字符串-那样遍历生成器for i in chunkstring(s,n):
,或使用将其转换为列表(例如)list(generator)。生成器比列表更有效地使用内存,因为生成器可以按需生成元素,而不是一次生成所有元素,但是它们缺少某些功能,例如索引

此生成器最后还包含任何较小的块:

>>> list(chunkstring("abcdefghijklmnopqrstuvwxyz", 5))
['abcde', 'fghij', 'klmno', 'pqrst', 'uvwxy', 'z']

用法示例:

text = """This is the first line.
           This is the second line.
           The line below is true.
           The line above is false.
           A short line.
           A very very very very very very very very very long line.
           A self-referential line.
           The last line.
        """

lines = (i.strip() for i in text.splitlines())

for line in lines:
    for chunk in chunkstring(line, 16):
        print(chunk)


 类似资料:
  • 我在一个名为string1到String7的程序中有七个字符串。 每个字符串的大小为30个字符。

  • 我有一个文件测试。txt文件: 我想读取此文件并写入另一个文件。txt,每行三个字符,如 我所做的 当字符串的长度不是3的倍数时,此操作运行良好。当字符串长度是3的倍数时,它会在输出文件的末尾插入额外的换行符。当字符串长度是3的倍数时,如何避免在末尾插入新行? 我尝试了另一种更短的方法, 但它仍面临同样的问题。 我在这里寻找,在这里,但仍然无法解决它。

  • 问题内容: 对于一个项目,我需要一种创建数千个随机字符串同时保持较低冲突的方法。我正在寻找长度只有12个字符且只有大写的字符。有什么建议? 问题答案: 码: 输出: 5个例子: 编辑: 如果你只需要数字,使用恒定的,而不是从一个模块。 3个例子:

  • 问题内容: 使Python字符串不可变的设计原因是什么?它如何使编程更容易? 我习惯于可变字符串,例如C语言中的可变字符串。我应该如何在没有可变字符串的情况下进行编程?有没有最佳做法? 问题答案: 收到字符串时,请确保它保持不变。假设您将使用字符串参数构造一个如下所示的字符串,然后修改该字符串;那么的名称就会突然更改: 使用可变的字符串,您必须一直制作副本,以防止发生不良情况。 它还使单个字符与长

  • 我想在JavaScript中使用空格作为分隔符将字符串分成固定大小的块(例如每个140个字符)(即它不应该分词),注意:它应该处理换行符目前我使用的是wordwrap npm包,但它不处理新行符。 它适用于普通文本,但如果文本包含新行标记,我会得到以下错误: syntaxerror:exports.runinthiscontext(VM.js:73:16) 在module._compile(mod

  • 问题内容: 有没有办法在不知道字符串长度的情况下,将一个字符长的字符串切成4个字符串,每个字符长? 例如: 问题答案: