我有一个文本文件。我想搜索特定字符(或者理想情况下是字符组(字符串)),然后使用找到的字符和所选字符前面的字符2/4执行操作。你知道吗
我做了一个版本,搜索的字符行,但我找不到等效的字符。你知道吗
f = open("C:\Users\Calum\Desktop\Robopipe\Programming\data2.txt", "r")
searchlines = f.readlines()
f.close()
for i, line in enumerate(searchlines):
if "_" in line:
for l in searchlines[i:i+2]: print l, #if i+2 then prints line and the next
print
如果我理解这个问题,你想要的是反复搜索一个巨大的字符串,而不是一个一个地搜索字符串列表。你知道吗
所以,第一步是,不要使用} ,这样首先就得到了一个巨大的字符串。你知道吗
readlines
,而是使用^{接下来,如何重复搜索字符串中的所有匹配项?你知道吗
嗯,字符串是一个iterable,就像列表是一个iterable一样,它是一个由字符组成的iterable(这些字符本身就是长度为1的字符串)。因此,您可以在字符串上迭代:
但是,请注意,这只适用于仅搜索单个字符匹配的情况。如果您在前四个字符中找到一个} :
_
,它将失败。一个字符一个字符地循环几MB的文本可能效率很低。*因此,您可能希望改为循环^{*你可能想知道
find
怎么可能除了做同样的循环之外还做任何事情。你说得对,它仍然是一个字符一个字符地迭代。但它是在标准库提供的优化代码中使用通常的CPython实现来实现的,这意味着“内部循环”是在C代码中而不是在Python代码中实现的,它不必“装箱”每个字符来测试它等等,所以它可以快得多。您可以使用正则表达式:
正则表达式搜索任意两个字符(不是uux)、一个uux,然后搜索任意四个不是下划线的字符。你知道吗
输入:
脚本返回:
相关问题 更多 >
编程相关推荐