Python - 在特定长度的文件中查找字符串,该字符串必须是大写且仅包含数字。

10 浏览
0 Comments

Python - 在特定长度的文件中查找字符串,该字符串必须是大写且仅包含数字。

我想找到一个特定长度的字符串,例如7个字符。该字符串只能包含大写字母和数字。我有几个想法:逐行读取文件...

我不确定这里的最佳做法-是一次性读取整个文件还是使用循环逐行读取文件?读取文件时是否必须使用循环?

# 读取文本文件的行
filetoread=open("mytextfile.txt")
for lines in filetoread  # 对吗?
 #仅作为一个给定文本字符串的示例(不来自文件)
    characters = "D123456"
    for x in characters:
        if x == "D":
            print ("找到字母", x)

但在我的情况下,我不知道我的7个字符长度的字符串中会出现什么字符,所以显然不能搜索“D”。

所以我有一些想法,我需要读取文件,检查长度为7的字符串(我不确定如何处理文件中的内容,例如:

第1行:我的路径=“7个字符”(所以基本上是找到符合大写字母和数字的7个字符的子字符串)

我不知道,这很简单,但我不认为我理解它背后的基本逻辑。

0
0 Comments

Python - 在特定长度的文件中查找字符串,且该字符串必须为大写字母和数字的组合。

在一般情况下,正则表达式(regex)是在文件中搜索满足特定条件的字符串最简洁和最快速的方法。我建议使用RegEXR工具来开发每个特定用例的正则表达式。对于您的情况(在文件中查找7个连续的大写字母或数字字符),我会这样做:

import re
text = """
Lorem Ipsum is simply dummy text of the printing and typesetting industry. 
Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, 
when an unknown printer took a G4LL3YS of type and scrambled it to make a type specimen book. 
It has survived not only five centuries, but also the leap into ELEC7R0NIC typesetting, remaining essentially unchanged.
It was popularised in the 19601970s with the release of LETRASET sheets containing Lorem Ipsum passages, 
and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum.
"""
# 在示例文本中搜索模式
found_patterns = re.findall(r'([A-Z\d]{7})', text)
# 如果只想要第一个匹配,也可以使用下面的代码
# found_patterns = re.search(r'([A-Z\d]{7})', text).group()
print(found_patterns)

文章来源:https://regexr.com/

0
0 Comments

问题的出现原因:

该问题的出现是因为需要在文件中查找特定长度的字符串,该字符串必须由大写字母和数字组成。在给定的Python代码示例中,使用了unicodedata库来规范化文件的每一行,并检查每个字符的字符类别。只有当字符被unicode定义为大写字母("LU")或数字("N")时,才被视为符合要求的字符。

解决方法:

在给定的Python代码中,定义了一个名为string_finder的函数,该函数接受一个文件名和一个可选的长度参数。函数使用with open打开文件,并逐行遍历文件内容。对于每一行,首先使用unicodedata.normalize函数进行规范化处理,然后遍历每个字符。通过调用unicodedata函数获取字符的字符类别,并检查字符类别是否包含"LU"(大写字母)或"N"(数字)。如果是,则将该字符添加到return_chars列表中。当return_chars列表的长度达到指定的长度时,将列表中的字符连接成一个字符串,并将其作为结果返回。如果在文件中没有找到符合要求的字符串,则返回None。

另外,原文中还提到了一个与解决方法无关的问题,即如何递归地搜索*.ini或通配符文件。对于这个问题,原文给出了解决方法,即使用glob模块来实现递归搜索。

0
0 Comments

这个问题的出现是因为需要在一个特定长度的文件中查找只包含大写字母和数字的字符串。以下是解决这个问题的方法:

1. 读取整个文件:对于普通大小的文件,可以一次性读取整个文件,而不是逐行读取。这样可以简化代码并提高效率。

2. 使用正则表达式:使用Python的re模块,可以使用正则表达式来匹配符合特定条件的字符串。在这种情况下,可以使用正则表达式'\b[A-Z0-9]{7}\b'来匹配长度为7的字符串,且只包含大写字母和数字。

3. 正则表达式解释:

- \b:表示单词的开始或结束

- [A-Z]:表示大写字母范围,从A到Z

- [0-9]:表示数字范围,从0到9

- {7}:表示前面指定的字符的长度为7

- \b:表示单词的开始或结束

4. 使用示例代码:可以使用以下示例代码来查找文件中符合条件的字符串,并打印结果:

import re
with open("somefile.txt") as file:
   data = file.read()
   result = re.findall(r'\b[A-Z0-9]{7}\b', data)
   print(result)

通过上述方法,可以在特定长度的文件中找到只包含大写字母和数字的字符串。感谢上述代码中对正则表达式的解释,使得我们能够更好地理解每个元素的含义。

0