我正在查看一组非常大的二进制数据,它位于一个单独的文件中。挑战在于找到最大的连续数字1和0。我已经从Python中访问了该文件(我使用Python btw),并且能够编码以找出0和1的总数。任何帮助都会非常感激,因为我在使用Python时是编码的初学者。干杯。 这就是我迄今为止所做的:
filename = "C:/01.txt"
file = open(filename, "r")
count_1 = 0
count_0 = 0
for line in file:
count_0 = count_0 + line.count("0")
count_1 = count_1 + line.count("1")
pass
print("Number of 1s = " + str(count_1))
print("Number of 0s = " + str(count_0))
我实际上没有开始编码以找到连续的数字。
答案 0 :(得分:3)
要查找某个子字符串的最长出现次数,可以使用如下函数:
def longest_segment(sub, string):
return max(m.group() for m in re.finditer(r'(%s)\1*' % sub, string))
这可以通过在sub
中找到所提供的子字符串string
的所有匹配项并返回最长的字符串来实现。
答案 1 :(得分:1)
这是一个简单的解决方案:循环读取数据,计算读取的连续1次,读取0时(意味着到达一个段的末尾)将它的长度与到目前为止发现的连续1的最长段进行比较。
def getMaxSegmentLength(readable):
current_length= 0
max_length= 0
for x in readable:
if x == '1':
current_length+= 1
else:
max_length= max(max_length, current_length)
current_length= 0
return max(max_length, current_length)
def main():
# open a file located in G:/input.txt in read mode and name the file object: inputf
with open('G:/input.txt', 'r') as inputf:
# put all the text in filef in s
s= inputf.read()
# get the longest streak of 1s in string s
n= getMaxSegmentLength(s)
print(n)
if __name__ == '__main__':
main()
答案 2 :(得分:-1)
s=raw_input() #read s from file in this case
zero=0
one=0
zz=0
oo=0
for i in list(s):
if i=='1':
if zz>=1:
zero=max(zero,zz)
zz=0
oo+=1
else:
if oo>=1:
one=max(one,oo)
oo=0
zz+=1
if oo>=1:
one=max(oo,one)
if zz>=1:
zero=max(zero,zz)
print zero,one
#O(n)