Python 如何将长度不同的字符串尽量均匀地分配到N个文件中?每一行的字符串作为整体,不能打散。

发布网友 发布时间:2022-04-06 03:50

我来回答

4个回答

懂视网 时间:2022-04-06 08:11

python将字符串等长分割的方法:1、两个一组分割,代码为【b=re.findall(r'.{2}',aa) 】;2、按照固定长度分割字符串三个字符一组,代码为【re.findall(r'.{3}', string)】。

【相关学习推荐:python教程】

python将字符串等长分割的方法:

方法一:

代码示例

#!/bin/python 
#site:WWW.jb51.net
# 
A = open('mac.txt','r') 
a = A.readlines() 
for aa in a: 
 b = list(aa.strip()) 
 c='' 
 for i in range(len(b)): 
 if i !=0: 
 if i%2 == 0: 
 c=c+'-'+b[i] 
 else: 
 c=c+b[i] 
 else: 
 c=c+b[i] 
 print c 
A.close()

方法二:

代码示例

#!/bin/python 
# 
import re 
A = open('mac.txt','r') 
a = A.readlines() 
for aa in a: 
 b=re.findall(r'.{2}',aa) 
 c='-'.join(b) 
 print c 
A.close()

使用用python的正则表达式实现,执行效率高,值得推荐。

处理结果:

50-E5-49-E3-2E-CB

90-2B-34-13-EF-A6

50-E5-49-EC-BA-1C

90-2B-34-57-B1-6F

1C-6F-65-29-6D-F9

90-2B-34-13-1A-14

50-E5-49-E3-E2-F8

50-E5-49-3A-26-96

90-2B-34-5F-B0-21

90-2B-34-13-15-74

90-2B-34-18-43-BF

00-24-1D-0E-25-8D

python处理字符串还是很牛的,建议大家牢固掌握。

python按照固定长度分割字符串三个字符一组

代码一

def cut_text(text,lenth): 
 textArr = re.findall('.{'+str(lenth)+'}', text) 
 textArr.append(text[(len(textArr)*lenth):]) 
 return textArr 
 
print(cut_text('1234567abcdefg',3)) 
 
['123', '456', '7', 'abc', 'def', 'g']

代码二

>>> import re
>>> string = '1234567abcdefg'
>>> re.findall(r'.{3}', string)
['123', '456', '7', 'abc', 'def']
>>>

想了解更多相关学习,敬请关注php培训栏目!

热心网友 时间:2022-04-06 05:19

背包问题的一个变种。或者说是一维装箱算法。

你将每一行字符串想象为一个物品,字符串的长度就是这个物品的大小。每个文件相当于不同的箱子,箱子的大小是固定的,装入的物品体积之和不能超过箱子的总容量。

问题就是:如何使用尽可能少的箱子来装入所有的物品,或者:如果使尽可能多的箱子空间利用率更高,以及类似的相关问题。

这类问题的答案不是一个简单的数字,它需要给出一个策略:物品1...n分别装入箱子1...m(m<=n).

对于二维装箱或三维等,区别主要在于解法的复杂度,但一个解法一般来说其思路是可以从一维扩展到二维或者三维的。


这类问题目前来说,没有全局最优解(即,没有一个算法能确保在所有情况下均能得到最好的结果),但可以得到局部最优解。算法有多种,如最常见的贪心算法,或动态规划。

贪心算法的思路比较简单:把所有的物品从大到小排好序,拿一个箱子,尝试装入最大的物品,如果不能装入,就尝试装入小一些的物品,如此循环,直到所有物品装入所有箱子。

算法很简单,但很多时候得到的结果并不理想。

贪心算法

动态规划的思路是,每装入一个物品到箱子里,就提出一个新的问题:【以所有未装入的物品和这个箱子剩余空间作为条件,怎么装?】而这样的问题随着装入的物品不同,会有许多个,选择其中最终剩余空间最小的方式,就是局部最优的解。一般来说,这比较适合用递归来处理,但它的复杂度是远远高于贪心算法的。

动态规划

当然,还有其它的算法,不同的算法有不同的思路,复杂度也不同,适用范围也有一些区别。所以,没必要纠结于【最好】,只要【尽可能好】。

否则的话,关于装箱问题,都可以出许多篇博士论文了。


针对题主这一问题,贪心算法的解决思路就是读入每一行,然后排序,从大到小装入剩余空间最大的箱子(即装入内容最少的箱子)。

可以参考以下处理方式:

热心网友 时间:2022-04-06 06:37

题主你好,

代码及相应测试截图如下:

上面代码大致思路:

    1.将题主那几行字符串放在文件original_file中;

    2.定义3个变量file1|file2|file3-char-length,表示被写入的3个目标文件的字符长度,初始值为0;

    3.一行一行的读取original_file中的内容,然后对比2中定义的3个变量长度,谁小,就将当前行追加到那个文件中,然后将该字符串的长度加到相应的变量上,如此循环.

希望可以帮到题主, 欢迎追问

热心网友 时间:2022-04-06 08:12

str="somethingyoulike"*100
files=["a.txt","b.txt","c.txt"]
strs=[str[0:len(str)//3],[str[len(str)//3:len(str)//3*2]],[str[len(str)//3*2:len(str)]]]
for a in range(3):
--with open(files[a],"w")as f:f.write(strs[a])
print("finished.\n--the end--")

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com