- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我每行读取一个文件行并检查代码部分结束的位置:出现特定的字符序列。该序列可能出现在代码部分中,因此我必须检查冗余:连续行中有多少次包含该序列。连续出现 10 次,我应该返回连续出现开始检测代码部分结尾的第一行。
regexp_dict_02 = {'Name': 'EMPTY_PAGES', 'Expr': '(FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)'}
def FindEmptyPg(Inpfile,Section):
NbrLine = []
Pos = []
flag = 0
index = 0
Ln = 0
with open(Inpfile) as fp:
for i, line in enumerate(fp):
if i >= Section.startline and i < 30061 :
s=re.search(regexp_dict_02['Expr'],line)
if s:
NbrLine.append(i)
logging.info (NbrLine)
logging.info (len(NbrLine))
for index in range((len(NbrLine))-1):
if NbrLine[index+1] - NbrLine[index] == 1 :
logging.info (str (NbrLine[index+1]) + ' ' + str(NbrLine[index]))
Pos.append (index)
flag += 1
if flag == 5 :
Ln = NbrLine[Pos[0]]
break
logging.info (Pos)
return Ln
在上面的代码中,我只检查了两个连续的行,我得到了错误的行号。我避免使用状态机等复杂的东西,但我仍然卡住了。
最佳答案
这是一种解决方案。以下代码遍历每一行。每次找到匹配项时,它都会将行索引添加到 block
中。一旦找到没有任何匹配项的行,该 block 将被视为“关闭”并创建一个新的空 block ,但在此之前,它会保存 block 的长度和 results
中的第一个索引。这些是您唯一感兴趣的信息。最后,您对 results
进行排序并选择最后一项(元组列表的排序将默认按元组的第一项排序,在本例中为 len block 的),一个元组,其中包含找到的最长 block 以及该 block 第一行的索引。
t = \
'''
000010000000000000000000000000000000000011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
000010000000000000000000000000000000000011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
000010000000000000000000000000000000000011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
00001FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00011111
000010000000000000000000000000000000000011111
000010000000000000000000000000000000000011111
000010000000000000000000000000000000000011111
'''
pattern = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'
block = []
results = []
for i, line in enumerate(t.split('\n')):
if pattern in line:
block.append(i)
else:
try:
results.append((len(block), block[0])) #save the len and the first index of each block
block = []
except IndexError:
pass
cons, index = sorted(results)[-1] #number of consecutive match, line index
print(f'max consecutive matches found: {cons} , stating at line {index}')
输出:
max consecutive matches found: 14 , stating at line 11
解决评论:
I need the first sufficient successive occurrences: first 10 successive occurrences matched then I catch the line.
您可以改用以下代码。
pattern = 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF'
block = []
for i, line in enumerate(t.split('\n')):
if pattern in line:
block.append(i)
else:
if len(block) >= 10:
print(f'found a block of at least 10 lines starting from line {block[0]}')
break
block = []
关于python 在文件中查找正则表达式匹配次数最多的部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50874061/
看来我又被一个简单的正则表达式卡住了。 我想要什么: 1 到 999 之间的数字 可选:逗号、符号 如果输入逗号,最少1位小数,最多3位小数点应该是presebt。 Allowed: 100 999,
我需要从两列中获取最大值并将其发送到第三列。这些列的大小都是统一的,但有时大小会有所不同,但它们都将从同一个单元格开始。例如: 5 8 - 6 2 - 6 5 - 带有破折号的列需要找到其他两个之间的
我在我的网站上有一张包含用户排名列的表格,排名是一个数字,我想选择排名最高的 3 个用户,所以我查看并搜索了我认为最好的查询是那:Link (正确答案的第二个查询),但我不明白查询,如果有人能一步一步
我正在尝试制作一个点击计数器,我想收集 24 小时内的总点击次数。无论最终用户位于哪个时区,这 24 小时都应该是固定值。在 24 小时内,数据库应更新为 +1 次点击计数,一旦达到 24 小时时间范
我有一个在典型共享主机上运行的 PHP + MySQL Web 应用程序,我想知道调用最多的查询是什么以及消耗的资源量是多少。这样,我将专注于最昂贵的查询以优化资源或检测优化不佳的查询。 例如: qu
这是我“尝试”从用户输入的数字中找到最大 2 个值的代码: #include using namespace std; void maximum2(int a, int& max1,int& max
我需要编写一个 Python 函数,从具有最多“o”字符的字符串中返回单词。例如,get_most_ooo_word(['aa ao ooo']) 应该返回 ['ooo'] 和 get_most_oo
我正在寻找一种哈希算法,以创建尽可能接近字符串的唯一哈希值 (max len = 255),从而生成一个长整数 (DWORD)。 我意识到26^255 >> 2^32,但也知道英语的单词数远少于2^3
我得到了一个仅由 's','t','u','v' 作为字符组成的字符串 T。我想找到长度为 |T| 的字符串数它最多与 T 不同 n 个位置。而且每个这样的字符串在三个不同的位置不能有相同的字符,这些
我有一群“专家”(大约 300 人)可以胜任一项工作。而且我有很多工作必须完成,比如说大约 500 个。我也有信息,一个专家能做某项工作有多“好”。这将导致一个 300 x 500 的矩阵来保存权重。
我正在尝试解决这个问题,虽然我可以使用蛮力解决它,但是以下优化算法为我提供了一些测试用例的错误结果。我尝试了但无法找到代码的问题,任何人都可以帮助我。 问题:给定一个字符串 S 和整数 K,找到整数
我需要一个混合长度的正则表达式验证,总长度为 6 个字符,其中 4-6 个大写/数字字符和 0-2 个空格。 我试过 ^[A-Z0-9]{4,6}+[\s]{0,2}$ 但它导致最大长度为 8 个字符
我有一个数组 {-1,2,3,4,-3,-2,1,5} 现在我想找到给定数组的最小连续总和子数组,最多 K 次交换。 在上面的数组中,最小连续和是-5,子数组是{-3,-2} 对于 K=1 我应该如何
我们有一个简单的表格如下: ------------------------------------------------------------------------ | Name |
如果哈希不能超过 4 个字符,并且这 4 个字符只能是小写字母或数字,那么创建 String 哈希的最佳方法是什么? 我要散列的字符串有 1-255 个字符。我知道在没有冲突的情况下创建 4-char
我希望使用 Multipeer Connectivity 框架,并感谢任何关于如何最好地进行的经验之谈。 我需要在“教练”设备和最多 45 个“玩家”设备之间建立连接。他们都在同一个空间,但无法预测
给定一个数组 a,什么是实现其组合直到第 n 的最佳方法?例如: a = %i[a b c] n = 2 # Expected => [[], [:a], [:b], [:c], [:a, b], [
这个问题在这里已经有了答案: Formatting floats without trailing zeros (21 个回答) 关闭8年前。 我想格式化最多包含 2 个小数位的 float 列表。但
我无法使用以下形式的命令登录到远程 docker 注册表: docker login –u my-username –p my-password registry.myclient.com 我得到的错
所以这是我的代码:服务器.java import java.io.*; import java.net.*; import java.util.*; class Server implements R
我是一名优秀的程序员,十分优秀!