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

问题描述 投票:0回答:2

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

我不确定此处的最佳做法-在一个块中读取整个文件,还是使用循环逐行读取文件?您是否必须使用循环逐行读取文件?

# read lines in text file
filetoread=open("mytextfile.txt)

for lines in filetoread  # right ?

#just an example of a given string of text (not from the file)

characters = "D123456"
for x in characters:
    if x == "D":
        print ("found letter", x)

但是在我的情况下,我不知道在7个字符长的字符串中会出现什么字符,因此我显然无法搜索“ D”。

所以我有主意,我需要读取文件,检查长度为7的字符串(我不确定如何处理文件中的内容,如下所示:

第1行:我的路径=“ 7个字符”(因此,基本上甚至可以找到包含7个包含大写字母和数字的字符的子字符串)>

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

我想找到一定长度的字符串-例如7个字符。该字符串只能包含大写字母和数字。我有以下想法:逐行阅读文件...我不确定最好的...

python string alphanumeric
2个回答
0
投票

unicode规范中有很多大写字母和数字。本示例将规范文件的每一行,然后检查每个字符的字符类。如果unicode用大写字母表示,则算在内。 (我认为表情符号将没有大写版本...)。

import unicodedata

def string_finder(filename, length=7):
    with open(filnname) as fp:
        return_chars = []
        for line in fp:
            line = unicodedata.normalize(line.strip())
            for c in line:
                category = unicodedata(c)
                if "LU" in category or "N" in category:
                    return_chars.append(c)
                    if len(return_chars) == length:
                        return "".join(return_chars)
    return None

0
投票
import re

with open("somefile.txt") as file:
   data = file.read()
   result = re.findall(r'\b[A-Z0-9]{7}\b', data)
   print(result)
© www.soinside.com 2019 - 2024. All rights reserved.