当前位置: 首页 > news >正文

Python小程序 - 文件处理3:正则表达式

正则表达式:文本年鉴表。遗留的问题很多。。。用AI再想想

  1. 需求:读入txt文件,过滤文件有关年记录
    0)读入txt文件
    1)以“。”,中文句号,为界区分一句,最小统计单位
    2)年格式:YYYY,4位
    3)输出:YYYY:所在句子内容
    4)说明
          -  一句中包含多个年的,以“,”,中文逗号连接
          - 剔除句中的非文字内容:换行符,非正常的标号等
          - 按行输出过滤到的有关年记录
  2. AI提问 -- AI的思考过程帮助我们理清思路、补充异常处理过程
    DeepSeek文心一言
    你是python专家,请用正则表达式对文本进行处理
    1. 以中文句号开头、结尾为一个独立句子,两个句号之间为句子内容
    2. 句子中不再包含句号
    3. 提出每个句子中的4位数字作为年份标识

    好的,我现在需要解决用户的问题,使用正则表达式处理文本,按照他们的三个要求来做。首先,我需要仔细理解每个要求的具体含义。

    第一个要求是,以中文句号开头和结尾作为一个独立句子,两个句号之间的内容是句子内容。也就是说,每个句子应该被两个中文句号包围,比如“。这是一个例子。”这样的结构。但这里可能存在一点疑问,用户是不是指句子以中文句号开头和结尾?比如,整个文本中的句子被分割成类似“。内容。”的结构?或者可能用户的意思是以中文句号作为分隔符,比如两个中文句号之间的部分是一个句子?比如文本可能是“。句子一。句子二。”这样,每个句子被包裹在两个句号之间?

    这个时候可能需要进一步分析,但根据常规情况,可能用户的意思是,用两个中文句号来分割句子,例如句子被包裹在“。”之间。比如,文本中的结构是“。句子内容。”,然后另一个句子是另一个“。另一个句子。”。这种情况下,需要提取两个句号之间的内容作为独立句子,而每个独立句子本身不应该包含句号

    第二个要求是,句子中不再包含句号,也就是每个提取出来的句子内部没有句号,这可能意味着在分割句子的时候,必须确保在两个中文句号之间的内容里不含有其他句号。

    第三个要求是提取每个句子中的4位数字作为年份标识,比如像“2023”这样的年份。

    那现在,我需要分步骤处理:

    第一步,使用正则表达式来分割文本,提取出所有以中文句号开头和结尾的句子。这里可能需要用正则表达式来匹配两个中文句号之间的内容,但要注意可能存在其他句号的情况。不过根据第二个条件,句子内部不应包含句号,所以可能每个匹配的部分必须不包含中文句号或者其他类型的句号?

    不过,用户的第二个条件说明句子中不再包含句号,所以分割后的句子内部不会有句号。这可能意味着,在分割的时候,确保两个中文句号之间的内容不包含任何句号,或者用户在输入文本中的句子已经被正确分割,只需要正确匹配结构?

    这里可能需要用正则表达式来找到所有符合“。”开头和结尾,中间不含句号的字符串。

    例如,正则表达式可能是 r'。([^。]*)。',但需要确认是否正确。不过中文句号的Unicode是“\u3002”,所以可能需要使用unicode编码。或者用户提供的文本中是否使用全角句号?

    假设处理的是中文文本,中文句号是“。”,那么正则表达式应该匹配这个符号。所以可能的正则式是:r'。(.*?)。',但是这样可能会匹配中间有内容的句子,但根据条件,句子中不能包含句号,所以中间的内容应该不含句号。所以,可能需要使用否定字符类,即中间不包含“。”的内容。

    所以正确的正则表达式可能是:r'。([^。]+)。',这样匹配两个中文句号之间的非句号字符组成的字符串。这里用+确保至少有一个字符,避免匹配空句子。

    这样,第一步可以提取出所有符合条件的句子。

    接下来,对于每个提取的句子,需要从中找出4位数字作为年份。通常年份是介于1000到9999之间的数字,但用户可能只需要任何4位连续数字。比如,正则表达式可以是r'\d{4}',但需要注意是否可能包含其他情况,比如数字周围是否有边界,或者是否可能与其他数字相连,例如5位数字中的前四位或后四位。不过用户可能希望单独提取4位数字,所以可能需要使用边界判断,比如\b\d{4}\b,但中文中可能没有单词边界,所以可能需要使用环视断言,确保前后不是数字。

    因此,正确的正则表达式可能是r'(?<!\d)\d{4}(?!\d)',这样确保匹配的是独立的4位数字,不会在更长数字中的一部分。

    所以综合起来,步骤如下:

    1. 使用正则表达式找到所有以中文句号包围且中间不含中文句号的句子。

    2. 对每个找到的句子,使用正则表达式提取其中的4位数字作为年份。

    3. 返回每个句子对应的年份列表。

    现在需要考虑代码的结构。例如,输入的文本可能包含多个句子,每个句子被两个中文句号包围,但可能存在前后空格或其他情况,所以需要处理可能的空白字符?

    例如,如果句子是“。 这是一个例子,2023年。。”,中间可能有空格,或者在句号周围有空格?用户是否允许这样的情况?

    可能需要调整正则表达式,允许在中文句号前后有空格。例如,正则表达式可能修改为r'\s*。\s*([^。]+)\s*。\s*',这样忽略句号前后的空格。但具体要看用户的需求。

    此外,用户提供的例子可能需要处理不同的情况,但根据用户的问题描述,可能不需要处理空格,所以暂时假设中文句号是严格相连的,即句子是紧跟在句号后的,没有空格。或者可能在处理时需要考虑可能存在的空格,例如使用\s*来匹配可能的空白。

    现在,代码的大致思路是:

    - 用正则表达式找到所有符合条件的句子。

    - 对每个句子,提取其中的4位数字。

    - 最后返回一个字典或列表,其中每个句子对应提取到的年份。

    比如,输入文本可能是:“。这是一个测试句子,2023年。另一个句子,包含1999和2020。”,那么分割后的句子应该是“这是一个测试句子,2023年”和“另一个句子,包含1999和2020”,然后分别提取其中的2023,以及1999和2020。

    接下来,编写代码示例:

    首先,导入re模块。

    然后,定义处理函数:

    def extract_years(text):

    # 分割句子

    sentences = re.findall(r'。([^。]+)。', text)

    result = {}

    for idx, sentence in enumerate(sentences, 1):

    years = re.findall(r'(?<!\d)\d{4}(?!\d)', sentence)

    result[f"Sentence {idx}"] = years

    return result

    测试这个函数,假设输入文本为:

    text = "。这是2023年的例子。另一个句子里有1999和2020年。"

    那么,sentences会被匹配为 ['这是2023年的例子', '另一个句子里有1999和2020年']

    然后,对第一个句子,找到2023;第二个句子找到1999和2020。

    注意,第二个句子的“2020年”中的2020会被正确提取,因为后面的“年”不是数字,所以(?<!\d)和(?!\d)确保前后没有其他数字。

    但需要测试,例如如果句子中有数字如12345,那么中间的四个数字是否会被匹配?例如,12345中的2345是否会被匹配?但根据正则表达式中的(?<!\d)\d{4}(?!\d),只有当四个数字前后都不是数字时才会被匹配。例如,在“12345”中,可能无法匹配到任何四位数字,因为它里面都是连续五位,所以不会找到四位独立的情况。因此,这个正则表达式是正确的。

    现在,测试另一个例子,比如句子中有“编号是1234”,则会提取1234,而如果有“编号12345”,则不会提取任何四位数字,因为1234后面有一个5,所以后面的断言失败。

    综上,这样的代码应该可以满足用户的需求。但需要处理可能的边界情况,例如句子中存在多个四位数字,或者没有四位数字的情况。

    最后,返回的结果结构是字典,键是“Sentence 1”、“Sentence 2”等,值是对应的年份列表。

    可能用户希望结果以这样的结构呈现,所以这个代码应该符合要求。

    使用正则表达式处理文本,以提取符合特定格式的句子及其中的四位数字年份。首先,我需要明确任务的具体要求。用户提到,句子以中文句号开头和结尾,且句子内部不再包含句号。同时,需要提取每个句子中的四位数字作为年份标识。

    首先,我应该考虑如何正确分割句子。由于句子以句号开头和结尾,且句子之间可能由其他句号分隔,但需要确保每个句子独立。例如,文本可能是“。这是第一个句子。这是第二个句子。”,需要分割成两个句子:“。这是第一个句子。”和“。这是第二个句子。”。不过,用户提到两个句号之间为句子内容,可能意味着句子的结构是“。内容。”,所以正确的分割应该是以句号开头和结尾的部分作为一个句子。

    接下来,需要处理句子中的内容,确保其中不再包含句号。但根据用户的描述,可能句子本身在分割后已经确保了内部没有句号,或者需要进一步检查并移除内部的句号。不过,用户的第二点说明句子中不再包含句号,可能意味着在分割后的句子中,内容部分不应有句号,因此在处理时需要确保这一点。

    然后,提取每个句子中的四位数字作为年份。这里需要考虑四位数字可能出现在句子的任何位置,且可能有多个四位数字,但用户可能希望提取第一个出现的四位数字,或者所有四位数字。但根据问题描述,用户可能希望提取每个句子中的一个四位数字作为年份标识,可能需要确认是否每个句子中只有一个四位数字,或者如何处理多个的情况。

    现在,我需要构建正则表达式来匹配整个句子结构。首先,句子的模式是:以句号开头,接着是任意字符(除句号外),然后以句号结尾。但用户提到两个句号之间为句子内容,所以可能句子的结构是“。内容。”,其中内容可以包含任何字符,除了句号。或者,可能允许内容中有其他句号,但根据第二点,句子中不再包含句号,因此内容部分不能有句号。

    因此,正则表达式应该匹配以句号开头和结尾,且中间内容不包含句号的句子。例如,模式为:.([^。]+).

    然后,对于每个匹配的句子,需要提取其中的四位数字。四位数字的正则表达式为:\b\d{4}\b,但需要确保匹配的是四位数字,且可能作为年份出现。

    接下来,处理步骤可能是:

    使用正则表达式分割文本为句子,每个句子以句号开头和结尾,且中间没有句号。 对于每个句子,提取其中的四位数字。

    但可能存在一些边缘情况,例如句子中没有四位数字,或者四位数字出现在不适当的位置。需要根据用户需求决定如何处理这些情况,比如忽略没有四位数字的句子,或标记为无年份。

    现在,我需要考虑如何用Python实现这一点。首先,使用re.findall来找到所有符合句子模式的部分。然后,对每个句子,使用re.search来查找四位数字。

    可能的代码结构:

    import re

    text = "。这是2020年的一个例子。另一个句子包含1999年和2005年。"

    分割句子

    sentences = re.findall(r'.([^。]+).', text)

    for sentence in sentences:
    # 提取四位数字
    year_match = re.search(r'\b\d{4}\b', sentence)
    if year_match:
    year = year_match.group()
    print(f"句子: {sentence},年份: {year}")
    else:
    print(f"句子: {sentence},无年份")

    但这里可能存在一个问题,即原句中的句号被包含在匹配结果中,例如原句是“。内容。”,而findall的结果可能只捕获内容部分,即句子变量是“内容”,而不包括前后的句号。或者,可能正则表达式需要调整,以正确捕获整个句子包括句号。

    例如,原文本是“。句子内容。”,使用正则表达式r'.([^。]+).',则匹配到的是整个句子,包括前后的句号,而group(1)是内容部分。因此,可能需要调整正则表达式,以正确捕获整个句子。

    或者,可能应该使用re.finditer来遍历所有匹配项,并获取整个句子,包括句号。

    例如:

    pattern = r'.([^。]+).'

    for match in re.finditer(pattern, text):
    sentence = match.group(0) # 整个匹配的句子,包括句号
    content = match.group(1) # 内容部分,不包括句号
    # 提取年份
    year_match = re.search(r'\b\d{4}\b', content)
    if year_match:
    year = year_match.group()
    print(f"句子: {sentence},年份: {year}")
    else:
    print(f"句子: {sentence},无年份")

    这样,sentence变量将包含整个句子,包括前后的句号,而content是中间的内容。然后,在content中查找四位数字。

    但用户的要求是句子以句号开头和结尾,且句子中不再包含句号,因此content部分不应有句号。因此,在提取年份时,只需要在content中查找即可,因为content已经确保没有句号了。

    不过,可能用户提供的文本中,句子之间可能有其他句号,例如多个句号分隔,但根据用户的要求,两个句号之间为一个句子,因此正确的分割应该是每个句子由两个句号包围,且中间没有句号。

    例如,文本可能是“。句子1内容。句子2内容。句子3内容。”,分割后得到三个句子:“。句子1内容。”,“。句子2内容。”,“。句子3内容。”。

    因此,正则表达式应该正确匹配这种模式。

    现在,测试一下正则表达式:

    例如,文本为“。这是2020年的例子。另一个例子是1999年。”,使用正则表达式r'.([^。]+).',finditer将找到两个匹配项,每个匹配项是整个句子,包括句号,而group(1)是内容部分。

    然后,在内容部分提取四位数字。

    但可能用户希望将整个句子(包括句号)作为处理对象,而不仅仅是内容部分。例如,句子是“。内容。”,而年份可能出现在句子的任何位置,包括开头或结尾,但根据用户的描述,年份是句子中的一个四位数字,因此需要确保在句子内容中提取。

    现在,考虑可能的错误情况,例如句子中没有四位数字,或者四位数字出现在不适当的位置,例如“abc1234def”,其中1234是四位数字,应该被提取。

    综上,代码的大致步骤是:

    使用正则表达式分割文本为句子,每个句子以句号开头和结尾,中间没有句号。 对每个句子,提取其中的四位数字作为年份。

    现在,编写Python代码:

    首先,导入re模块。

    然后,定义文本。

    接着,使用re.finditer来遍历所有匹配的句子。

    对于每个句子,使用re.search查找四位数字。

    最后,输出结果。

    可能的代码:

    import re

    def extract_sentences_and_years(text):
    # 匹配以句号开头和结尾的句子,中间不包含句号
    sentence_pattern = r'.([^。]+).'
    sentences = []
    for match in re.finditer(sentence_pattern, text):
    sentence = match.group(0) # 整个句子,包括句号
    content = match.group(1) # 内容部分,不包括句号
    # 提取四位数字年份
    year_match = re.search(r'\b\d{4}\b', content)
    year = year_match.group() if year_match else None
    sentences.append((sentence, year))
    return sentences

    示例文本

    text = "。这是2020年的一个例子。另一个句子包含1999年和2005年。没有年份的句子。"

    处理文本

    results = extract_sentences_and_years(text)

    输出结果

    for sentence, year in results:
    print(f"句子: {sentence},年份: {year}")

    但这里可能存在一个问题,即如果句子中有多个四位数字,例如“句子包含1999年和2005年”,则re.search只会找到第一个匹配项,即1999年。如果用户希望提取所有四位数字,可以使用re.findall,但根据用户需求,可能只需要提取一个年份标识,因此取第一个即可。

    此外,需要确保四位数字是独立的,即作为单独的词出现,或者被非数字字符包围。例如,使用\b来匹配单词边界,确保四位数字前后没有数字。

    例如,在字符串“abc2020def”中,2020会被匹配,而在“20200”中,不会被匹配,因为不是四位。

    现在,测试示例文本:

    text = "。这是2020年的一个例子。另一个句子包含1999年和2005年。没有年份的句子。"

    处理后的结果应该是:

    句子: 。这是2020年的一个例子。,年份: 2020
    句子: 。另一个句子包含1999年和2005年。,年份: 1999
    句子: 。没有年份的句子。,年份: None

    这样,第三个句子没有年份,返回None。

    用户可能需要处理这种情况,例如忽略没有年份的句子,或者标记为无。根据用户需求,可能需要调整代码,例如只保留有年份的句子。

    此外,可能用户希望年份出现在句子中的任何位置,而不仅仅是内容部分,但根据问题描述,句子已经确保内部没有句号,因此年份应该出现在内容部分。

    综上,代码应该能够正确提取符合要求的句子及其中的四位数字年份。

    - DeepSeek代码

    import redef process_text(text):# 提取所有以中文句号包围且不包含内部句号的句子sentences = re.findall(r'。([^。]+)。', text)result = {}for i, sentence in enumerate(sentences, 1):# 提取句子中的4位年份数字years = re.findall(r'(?<!\d)\d{4}(?!\d)', sentence)result[f"Sentence {i}"] = {"content": sentence,"years": years if years else None}return result# 示例用法
    text = "。这是2023年的例子,包含多个年份如1998和2020。另一个句子。这个没有年份。最后一个2024案例。"
    output = process_text(text)# 打印结果
    for key, value in output.items():print(f"{key}:")print(f"   内容:{value['content']}")print(f"   年份:{value['years']}\n")

    - 文心一言 代码

    import redef extract_sentences_with_years(text):# 匹配以句号开头和结尾的独立句子(中间不含句号)sentence_pattern = r'\.([^。]+)\.'results = []# 使用finditer遍历所有匹配项for match in re.finditer(sentence_pattern, text):full_sentence = match.group(0)  # 包含句号的完整句子content = match.group(1)        # 句子内容(不含句号)# 在内容中查找4位数字年份(匹配单词边界确保独立数字)year_match = re.search(r'\b\d{4}\b', content)# 提取年份或标记为Noneyear = year_match.group() if year_match else Noneresults.append({"sentence": full_sentence,"year": year})return results# 示例用法
    text = "。这是2020年的示例文本。第二个句子包含1998和2005两个年份。没有数字的句子。最后测试2023年。"processed = extract_sentences_with_years(text)# 打印结果
    for item in processed:print(f"句子:{item['sentence']} | 年份:{item['year']}")

  3. 问题与改进
    # 连续的两句包含4位数字
    fr = fr.replace("。","。。")   # why omit when 4 digital exist 2 continuous sentenses, fill 1 more "。"; no found more effe # 4全数字并非真实意义的年
    pattern = re.compile(r'\。[^。]*1[6-9]\d{2}[^。]*\。') # year start with 1
    pattern = re.compile(r'\。[^。]*20\d{2}[^。]*\。')     # year start with 2
  4. 代码实现
import os, redef show_year(file_name, out_file):with open(file_name, "r", encoding="UTF8") as fp:fr = fp.readlines()  # get file contentfr = ''.join(fr)fr = fr.replace("\n","")fr = fr.replace("。","。。")   # why omit when 4 digital exist 2 continuous sentenses, fill 1 more "。" pattern = re.compile(r'\。[^。]*[12]\d{3}[^。]*\。')yl = re.findall(pattern,fr)   # get sentense with 4 digitalds = {}for fm in yl:pattern = re.compile(r'\d{4}')gy = re.findall(pattern, fm)   # get 4 digital, which yeary = ','.join(gy)ds[y] = fm.replace("。","")    # no show "。"yl = list(ds.keys())    # get year listyl.sort()               # sort year and then show as ascendwith open(out_file, "w", encoding="UTF8") as fo:for i in yl:print(i,": ", ds[i])  # show year and sentencefo.writelines(i + ": " + ds[i] + '\n')   # output result to fileif __name__ == "__main__":out_file = 'year_out.txt'     file_name = "yck.txt"
##    file_name = "繁荣与衰退.txt"file_path = os.path.abspath(os.curdir) + "\\" + file_nameshow_year(file_path, out_file)################################ output
1000: 相比之下,全美新生儿死亡率为每1000名中有197名死亡
1000,1870,1000: 死亡的还不仅仅是人类:战前美国每1000人拥有749头牛,到1870年降至每1000人仅拥有509头牛,这主要是由于南方各州大量屠宰了这些牲口
1001: 用美国电话电报公司总经理的话来说,这个实验室所积攒的“1001项小专利”把竞争对手挡在了门外
1028: 欧文·费雪组织了1028名经济学家联名反对这项法案,全美324家新闻报纸中有238家敦促国会不要通过这项法案
1036: 密西西比河三角洲最大的农场主斯蒂芬·邓肯(Stephen Duncan)拥有1036名奴隶
1058,7755: 拉斐特学院的妮科尔·克雷思(Nicole Crain)和马克·克雷恩(MarkCrain)计算得出,对雇员人数在19人以下的企业,联邦法规遵从的单个雇员花费是10585美元;而雇员人数在500人以上的,相应的花费为7755美元
1093: 美国人天生就支持熊彼特的经济学理念,也就是说,他们相信推动历史变革的真正动力不是工人,而是那些能够凭空创造出新事物的发明家,如拥有1093项专利的爱迪生,有能力创建大型企业的企业家亨利·福特、托马斯·沃森和比尔·盖茨
1100: 20世纪50年代,列出所有新条例的《联邦公报》(FederalRegister )以年均11000页的速度更新
1164: 如果走河道,匹兹堡和圣路易斯之间的距离是1164英里
1202,2222,1997: 他们得到的结果令人震惊:一部电话机需要1202美元,一辆自行车需要2222美元,而1997年这些商品的实际售价远低于测算值,这说明根据工资水平调节之后的物价出现了大幅下降
1220,1040: 美国工业的问题波及消费经济的其他领域:新建房屋数量下降了近200万套——从20世纪60年代的1220万套降至20世纪70年代的1040万套
1300: 奴隶制的幽灵甚至还纠缠着当时尚未存在的金融品牌:在回顾自己的历史收购案之后,大通银行惊讶地发现,自己曾经收购的路易斯安那州市民银行和新奥尔良运河银行都曾以奴隶为抵押品向农场主放贷,涉及的奴隶总数超过13000人
1500: 另一方面,他在贸易上采取了一个危险的政策,退出跨太平洋伙伴关系,对从各国(尤其是中国)进口的钢材增收25%的关税,对进口的铝材增收10%的关税,并威胁称要对从中国进口的货物再增收1500亿美元的关税
1550: 由于人口密度的不断增加,“高危”水坝的数量已上升至至少15500座
........................
........................
2022: 目前的计划是到2022年把退休年龄推迟到67岁
2034,2029:  [17] 没有这样的改变,社会保险信托基金到2034年就会透支,医疗保险基金也会在2029年用尽
2200: 阿勒格尼山海拔2200英尺,在只能靠运河运输的年代,这座山就是横在匹兹堡和克利夫兰之间的一道无法逾越的天然屏障,而在人们建好铁路之后,这两个城市之间的线路变成了全球运输最繁忙的线路
2239: 里根第一次就任总统时,道琼斯工业平均指数为951点,8年后跃升至2239点,这就是最好的诠释
2319: 《多德–弗兰克法案》有2319页
2500: 20世纪50—60年代,超过2500万名美国人死于车祸,数百万人因车祸受伤
2500,2000:  [3] 战后有约2500万名俄罗斯人和约2000万名德国人无家可归
2800,1100: 罗斯福获得的选票比历史上任何一位候选人获得的选票都多——得票总数为2800万张,超越竞争对手1100万张
2853: 非邮政体系联邦政府公务员对普通民众的比例为1∶2853
3000,1400: 更糟的还在后面:在未来20年,65岁及以上的美国人数量会增加3000万,而适龄(18~64岁)美国工人的数量预计只会增加1400万
3000,1947,1957,1966: 二战之前,美国公众在医疗方面的支出每年不超过3000万美元,但战争结束之后,民众在医疗健康领域的消费接连出现新的峰值:1947年达到1.497亿美元,1957年达到10亿美元,1966年达到50亿美元
4000,1932: 广播也为不容易与人亲近的人物提供了展现自己的平台:查尔斯·库格林(Charles Coughlin)神父被人们称为“广播神父”,他平均每周要收到4000封听众来信,1932年2月来信数量达到了120万封,正是因为当时他批评胡佛总统是“有钱人的圣灵、华尔街的保护天使”
4800,1952,1982: 一项针对4800名出生于1952—1982年的非洲裔美国人的研究显示,69%的人在成年后留在了同一个县,82%的人留在同一个州,90%的人留在同一个地区,而他们上一代人的相应比例分别为50%、65%和74%
5000,2000: 19世纪40年代,美国境内铺设了5000英里铁轨,19世纪50年代则铺设了20000英里铁轨
5100,2500:  [23] 除此之外,美国还需偿还战争时期欠下的巨额债务:根据《邦联条例》成立的新联邦政府需要偿还5100万美元债务(各州还需额外承担州政府应偿还的2500万美元债务),但当时的政府没有能力通过征税增加财政收入
5760,8123,2016,1539: 就人均GDP而言,美国仍然远远领先于中国:57608美元对8123美元(2016年数据,按购买力平价计算,为15395美元)
6150: 20世纪20年代,美国社会经济的蓬勃发展和限制性条件更严格的移民法案的出台,使这种状况发生了改变:有615000名黑人,或者说相当于8%的南方黑人劳动力向北方迁移,他们填补了原本应该由外国移民从事的工作
6500,1500: 到19世纪80年代中期,他建设了三家巨型炼油厂,每天一共可以生产6500桶油,而此前的单日最大产量仅为1500桶
8000,2001: 开展证券化业务的人在(严重膨胀的)信用评级的保护下,似乎能在全球市场中为自己的产品找到不受限制的客户群体,他们把产品卖给了冰岛的银行,卖给了亚洲甚至中东的主权基金,次级抵押贷款担保的证券化产品的账面价值一度达到8000亿美元,相当于2001年年底总规模的7倍

相关文章:

Python小程序 - 文件处理3:正则表达式

正则表达式&#xff1a;文本年鉴表。遗留的问题很多。。。用AI再想想 需求&#xff1a;读入txt文件&#xff0c;过滤文件有关年记录 0&#xff09;读入txt文件 1&#xff09;以“。”&#xff0c;中文句号&#xff0c;为界区分一句&#xff0c;最小统计单位 2&#xff09;年格…...

JAVA中正则表达式的入门与使用

JAVA中正则表达式的入门与使用 一&#xff0c;基础概念 正则表达式&#xff08;Regex&#xff09; 用于匹配字符串中的特定模式&#xff0c;Java 中通过 java.util.regex 包实现&#xff0c;核心类为&#xff1a; Pattern&#xff1a;编译后的正则表达式对象。 Matcher&#…...

智慧能源管理平台:驱动电网数字化转型,引领绿色能源新时代

安科瑞 华楠18706163979 一、引言 在全球能源转型和"双碳"目标的推动下&#xff0c;微电网作为分布式能源系统的重要组成部分&#xff0c;正迎来快速发展期。安科瑞电气股份有限公司推出的微电网智慧能源管理平台&#xff08;EMS 3.0&#xff09;&#xff0c;通过整…...

OpenCV 图形API(30)图像滤波-----腐蚀操作函数erode()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用特定的结构元素腐蚀图像。 cv::gapi::erode 是 OpenCV 的 G-API 模块中用于执行图像腐蚀操作的函数。腐蚀是一种基本的形态学操作&#xff0…...

02-MySQL 面试题-mk

1.如何定位慢查询? 什么是慢查询? 页面加载过慢、接口压测响应时间过长(超过1s) 慢查询出现的情况有哪些? 聚合查询多表查询表数据量过大查询深度分页查询如何定位慢查询? 方案一:开源工具 调试工具:Arthas运维工具:Prometheus、Skywalking**Arthas:**可以使用命令的…...

利用安固软件实现电脑屏幕录像:四种实用方法分享

在日常工作中&#xff0c;有时我们需要录制电脑屏幕以进行教学演示、软件操作记录或重要会议的存档。安固软件终端安全管理系统提供了强大的屏幕录像功能&#xff0c;可以满足这些需求。 接下来&#xff0c;本文将介绍如何使用安固软件设置电脑实时画面录像&#xff0c;并分享…...

Gitee DevSecOps 以 CBB 驱动军工研发范式革新:平台化管理构件实践

随着军工软件向智能化、标准化与集约化发展&#xff0c;传统研发模式在效率、质量及协同方面面临显著瓶颈。项目规模扩大与系统复杂度的提升&#xff0c;亟需一种创新研发范式。Gitee DevSecOps 平台基于 CBB&#xff08;通用构件库&#xff09;理念&#xff0c;通过模块化、标…...

spring:xml方式调用构造方法创建Bean,调用set方法配置字段

如题&#xff1a; 要创建的Bean类UserServiceImpl02 &#xff1a; package com.itheima.service.impl;import com.itheima.dao.interfaces.InterfaceUserDao; import com.itheima.service.interfaces.InterfaceUserService;/*** copyright 2003-2024* author qiao wei* da…...

PM2 完全指南:Node.js 应用后台启动、关闭与重启详解

文章目录 **PM2 完全指南&#xff1a;Node.js 应用后台启动、关闭与重启详解****1. 什么是 PM2&#xff1f;****2. 安装 PM2****全局安装****验证安装** **3. 使用 PM2 启动 Node.js 应用****基本启动****指定应用名称****集群模式&#xff08;多进程负载均衡&#xff09;****监…...

LeetCode算法题(Go语言实现)_40

题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第 1 层&#xff0c;而根节点的子节点位于第 2 层&#xff0c;依此类推。 请返回层内元素之和 最大 的那几层&#xff08;可能只有一层&#xff09;的层号&#xff0c;并返回其中 最小 的那个。 一、代码实现 import &…...

网关与路由器知识点

1.自治系统是由同构型的网关连接的因特网。自治系统内部的网关之间执行内部网关协议IGP&#xff0c;半天自治系统之间用外部网关协议EGP交换路由信息。 2.BGP4是一种动态路由发现协议&#xff0c;支持无类别域间路由CIDR&#xff0c;应用于不同ISP的网络之间&#xff0c;成为事…...

【Hadoop入门】Hadoop生态之Pig简介

1 什么是Pig&#xff1f; 在大数据分析领域&#xff0c;Apache Pig是一个不可忽视的重要工具。Pig是Apache Hadoop生态系统中的一个高级数据分析平台&#xff0c;它提供了一种称为Pig Latin的脚本语言&#xff0c;用于简化大规模数据集的并行处理。Pig的核心思想是将复杂的数据…...

TPS入门DAY04 服务器篇

1.创建委托并绑定回调&#xff0c;实现解耦 /* 创建会话完成 */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMultiPlayerOnCreateSessionCompleted, bool, bWasSuccessful); /* 开始会话完成 */ DECLARE_DYNAMIC_MULTICAST_DELEGATE_OneParam(FMultiPlayerOnStartSessionC…...

YOLO学习笔记 | YOLOv8环境搭建全流程指南(2025.4)

===================================================== github:https://github.com/MichaelBeechan CSDN:https://blog.csdn.net/u011344545 ===================================================== YOLOv8环境搭建 一、环境准备与工具配置1. Conda虚拟环境搭建2. CUDA与…...

Java 设计模式:适配器模式详解

Java 设计模式&#xff1a;适配器模式详解 适配器模式&#xff08;Adapter Pattern&#xff09;是一种结构型设计模式&#xff0c;它通过将一个类的接口转换为客户端期望的另一个接口&#xff0c;使原本不兼容的类能够协同工作。适配器模式就像现实生活中的电源适配器&#xf…...

Java的基本语法(1)

一、运算符和表达式 举例说明什么是运算符&#xff0c;什么是表达式&#xff1a; int a 1; int b 2; int c a b; 在这个例子当中&#xff0c;是运算符&#xff0c;并且是算术运算符 ab是表达式&#xff0c;因为是运算符&#xff0c;所以ab是算术表达式 1.1算术运算符 …...

Spark-Core编程二

23) sortByKey import org.apache.spark.rdd.RDD import org.apache.spark.{SparkConf, SparkContext} object Cww { def main(args: Array[String]): Unit { // 创建 SparkConf 对象&#xff0c;设置应用名称和运行模式 val conf new SparkConf().setAppName("SortBy…...

【antd + vue】Modal 对话框:修改弹窗标题样式、Modal.confirm自定义使用

一、标题样式 1、目标样式&#xff1a;修改弹窗标题样式 2、问题&#xff1a; 直接在对应css文件中修改样式不生效。 3、原因分析&#xff1a; 可能原因&#xff1a; 选择器权重不够&#xff0c;把在控制台找到的选择器直接复制下来&#xff0c;如果还不够就再加&#xff…...

JavaWeb 课堂笔记 —— 08 请求响应

本系列为笔者学习JavaWeb的课堂笔记&#xff0c;视频资源为B站黑马程序员出品的《黑马程序员JavaWeb开发教程&#xff0c;实现javaweb企业开发全流程&#xff08;涵盖SpringMyBatisSpringMVCSpringBoot等&#xff09;》&#xff0c;章节分布参考视频教程&#xff0c;为同样学习…...

DataWorks智能体Agent发布!基于MCP实现数据开发与治理自动化运行

在传统的数据开发工作中&#xff0c;企业用户或者开发者常常需要进行繁琐的配置、复杂的代码撰写、反复的性能调优和大量重复性的操作&#xff0c;才能实现数据开发、数据集成和数据治理等工作&#xff0c;效率十分低下。 近日&#xff0c;阿里云大数据开发治理平台DataWorks基…...

VitePress 项目部署 cloudflare page 提示 Node 构建错误

提示的构建错误信息为&#xff1a; 09:35:29.838 Error: Exit with error code: 1 09:35:29.839 at ChildProcess.<anonymous> (/snapshot/dist/run-build.js) 09:35:29.839 at Object.onceWrapper (node:events:652:26) 09:35:29.839 at ChildProcess.emit …...

VUE的node包缓存很严重,问题及解决办法

以下是一些可能导致缓存问题的地方以及如何检查和解决这些问题的建议&#xff1a; 1. 检查依赖包的版本是否过时 某些依赖包可能有已知的缓存问题或性能问题。以下是需要特别注意的几个包&#xff1a; Vue CLI 相关&#xff1a; vue/cli-service 和 vue/cli-plugin-babel 的版…...

<C#>在 .NET 开发中,依赖注入, 注册一个接口的多个实现

在 .NET 开发里&#xff0c;有时一个接口会有多个实现类&#xff0c;此时就需要向依赖注入容器注册多个实现。下面会详细介绍不同场景下如何注册多个实现&#xff0c;以及怎样从容器中解析这些实现。 1. 注册多个实现 在 .NET 中&#xff0c;依赖注入容器可以通过不同方式注册…...

计算机视觉色彩空间全解析:RGB、HSV与Lab的实战对比

计算机视觉色彩空间全解析&#xff1a;RGB、HSV与Lab的实战对比 一、前言二、RGB 色彩空间​2.1 RGB 色彩空间原理​2.1.1 基本概念​2.1.2 颜色混合机制​ 2.2 RGB 在计算机视觉中的应用​2.2.1 图像读取与显示​2.2.2 颜色识别​2.2.3 RGB 色彩空间的局限性​ 三、HSV 色彩空…...

美食推荐小程序

用户端 1. **定位与筛选** - **精准定位**&#xff1a;根据用户所在位置&#xff0c;推荐周边美食餐厅。 - **筛选条件**&#xff1a;支持按菜系&#xff08;如川菜、粤菜&#xff09;、价格区间、评分、距离远近等筛选餐厅。 2. **餐厅展示** - **基本信息**&#xff1a;…...

使用django实现windows任务调度管理

在 Django 中实现 Windows 任务调度管理&#xff0c;你可以使用几种不同的方法。最常见的方法是使用 Django 自带的 celery 或者 django-background-tasks 库&#xff0c;或者使用 Windows 自带的任务计划程序。下面我会分别介绍这几种方法&#xff1a; 方法 1&#xff1a;使用…...

【Android】Android 打包 Release 崩溃问题全解析:Lint 错误、混淆类丢失及解决方法大全

摘要&#xff1a; 在 Android 项目的 Release 打包过程中&#xff0c;经常遇到诸如 Lint 校验失败、程序闪退、类找不到等问题。本文将详细分析 Android 打包时常见的崩溃原因&#xff0c;特别是如何应对 Lint 报错、混淆引发的类丢失&#xff08;NoClassDefFoundError&#xf…...

【Python 开源】你的 Windows 关机助手——PyQt5 版定时关机工具

&#x1f5a5;️ 你的 Windows 关机助手——PyQt5 版定时关机工具 相关资源文件已经打包成EXE文件&#xff0c;可双击直接运行程序&#xff0c;且文章末尾已附上相关源码&#xff0c;以供大家学习交流&#xff0c;博主主页还有更多Python相关程序案例&#xff0c;秉着开源精神的…...

布局决定终局:基于开源AI大模型、AI智能名片与S2B2C商城小程序的战略反推思维

摘要&#xff1a;在商业竞争日益激烈的当下&#xff0c;布局与终局预判成为企业成功的关键要素。本文探讨了布局与终局预判的智慧性&#xff0c;强调其虽无法做到百分之百准确&#xff0c;但能显著提升思考能力。终局思维作为重要战略工具&#xff0c;并非一步到位的战略部署&a…...

vue3循环表单【以el-form组件为例】,如何校验所有表单,所有表单校验通过后提交

1.循环时&#xff0c;在组件标签上使用ref绑定组件实例 3.如何校验所有表单都通过后方可提交&#xff1f;利用promise.all()判断 代码如下&#xff1a; <template><div><!-- 循环渲染表单 --><el-formv-for"(formItem, index) in formList":…...

量子代理签名:量子时代的数字授权革命

1. 量子代理签名的定义与核心原理 量子代理签名&#xff08;Quantum Proxy Signature, QPS&#xff09;是经典代理签名在量子信息领域的延伸&#xff0c;允许原始签名者&#xff08;Original Signer&#xff09;授权给代理签名者&#xff08;Proxy Signer&#xff09;代为签署文…...

HTTPS代理的实际优势,如何选择HTTPS代理服务?

在数字化时代&#xff0c;网络请求的安全性和效率成为企业和个人用户关注的焦点。HTTPS代理作为一种强大的工具&#xff0c;不仅在数据安全方面表现出色&#xff0c;还在安全访问、突破地域限制以及支持复杂任务等方面展现出多样化的优势。本文将深入探讨HTTPS代理的实际优势&a…...

Java 中常见的数据结构

目录 1. List (列表) 2&#xff09;ArrayList 2&#xff09;LinkedList 2. Set (集合) 1&#xff09;HashSet 2&#xff09;TreeSet 3. Map (映射) 1&#xff09;HashMap 2&#xff09;TreeMap 4. Queue (队列) 1&#xff09;LinkedList (也实现了Queue接口) 2&…...

Transformer多卡训练初始化分布式环境:(backend=‘nccl‘)

Transformer多卡训练初始化分布式环境:(backend=‘nccl’) dist.init_process_group(backend=nccl)在多卡环境下初始化分布式训练环境,并为每个进程分配对应的 GPU 设备。下面为你逐行解释代码的含义: 1. 初始化分布式进程组 try:dist.init_process_group(backend=nccl) e…...

云曦月末断网考核复现

Web 先看一个BUUCTF中的文件一个上传题 [BUUCTF] 2020新生赛 Upload 打开后是一个文件上传页面 随便上传一个txt一句话木马后出现js弹窗&#xff0c;提示只能上传图片格式文件 说明有前端验证。我的做法是把一句话改为.jpg格式&#xff0c; 然后上传 访问发现虽然上传成功了…...

SQL Server AlwaysOn (SQL 查询数据详解及监控用途)

修正后的完整查询 SELECT ar.replica_server_name AS [副本名称],ar.availability_mode_desc AS [同步模式],DB_NAME(dbr.database_id) AS [数据库名称],dbr.database_state_desc AS [数据库状态],dbr.synchronization_state_desc AS [同步状态],dbr.synchronization_health_d…...

使用 Q - learning 算法解决迷宫路径规划问题

整体功能概述 这段 Python 代码实现了一个使用 Q - learning 算法解决迷宫路径规划问题的程序。智能体在给定的迷宫环境中学习如何找到从起点到终点的最优路径&#xff0c;以获得最大奖励。 模块导入 python import numpy as np import randomnumpy&#xff1a;用于处理数组…...

SqlYog无限试用方法

1、WinR ,输入 &#xff1a;regedit 回车 2、进入注册表&#xff0c;在 \HEYK_CURRENT_USER\Software\{*********-D8CE-4637-9BC7-93E************}下的【InD100】保存着SQLyog的使用天数 3、在【InD】上右键&#xff0c;点击删除该项&#xff0c;在重启SQLyog后注册表中会重…...

14 nginx 的 dns 缓存的流程

前言 这个是 2020年11月 记录的这个关于 nginx 的 dns 缓存的问题 docker 环境下面 前端A连到后端B 前端B连到后端A 最近从草稿箱发布这个问题的时候, 重新看了一下 发现该问题的记录中仅仅是 定位到了 nginx 这边的 dns 缓存的问题, 但是 并没有到细节, 没有到 具体的 n种…...

Spring Cloud Gateway 具体的实现案例

文章目录 前言✅ 1. **创建 Spring Boot 项目**Maven 依赖&#xff1a;Gradle 依赖&#xff1a; ✅ 2. **配置 application.yml 路由和过滤器**解释&#xff1a; ✅ 3. **创建自定义过滤器**3.1 **前置过滤器&#xff08;Pre Filter&#xff09;**3.2 **后置过滤器&#xff08;…...

css易混淆的知识点

子选择器 (>) vs 后代选择器 (空格) 子选择器 (>) 只匹配直接子元素。后代选择器 (空格) 匹配所有后代元素&#xff08;无论嵌套多深&#xff09;。 绝对定位vs相对定位 布局&#xff1a; justify-content 的作用 控制子元素在主轴上的分布方式。常见值包括 flex-start、…...

OpenCV 图形API(27)图像滤波-----膨胀函数dilate()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 使用特定的结构元素膨胀图像。 cv::gapi::dilate 是 OpenCV G-API 模块中的一个函数&#xff0c;用于对图像执行膨胀操作。膨胀是一种形态学操作…...

13. Git 远程仓库配置

基本步骤 以Gitee为例子&#xff0c;GitHub的步骤也基本一致 1.注册/登录 Gitee 账号 https://gitee.com/ 2.新建仓库 3.配置仓库 根据自己的喜好&#xff0c;配置即可。 4.生成SSH密钥 ssh-keygen -t ed25519 -C "你的邮箱example.com"-t ed25519&#xff1a;使…...

语音识别——根据声波能量、VAD 和 频谱分析实时输出文字

ASR(语音识别)是将音频信息转化为文字的技术。在实时语音识别中,一个关键问题是:如何决定将采集的音频数据输入大模型的最佳时机?固定时间间隔显然不够灵活,太短可能导致频繁调用模型,太长则会延迟文字输出。有没有更智能的方式?答案是肯定的。 一种常见的解决方案是使…...

netty中的ChannelHandler详解

Netty中的ChannelHandler是网络事件和数据处理的核心执行单元,负责处理I/O事件(如连接建立、数据读写)以及业务逻辑的实现。它通过ChannelPipeline形成责任链,实现事件的动态编排与传播。以下从功能分类、核心机制到实际应用进行详细解析: 1. ChannelHandler的核心功能与分…...

介绍一下freertos

FreeRTOS 是一款‌开源的实时操作系统&#xff08;RTOS&#xff09;‌&#xff0c;专为嵌入式系统和微控制器设计&#xff0c;以‌轻量级、高可靠性、低延迟‌著称。它广泛应用于物联网&#xff08;IoT&#xff09;、工业自动化、消费电子等领域。以下是详细介绍&#xff1a; ‌…...

使用克魔助手查看iOS 应用程序使用历史记录和耗能历史记录

使用克魔助手查看iOS 应用程序使用历史记录和耗能历史记录 功能概述 克魔助手无需越狱即可访问iOS上各个应用程序的历史记录&#xff0c;包括&#xff1a; 最近几个月的app的详细启动时间记录&#xff0c;结束时间&#xff0c;app使用的硬件组件应用的耗能具体情况&#xff…...

mysql和mongodb

1.mongodb 写入更快&#xff0c;数据结构频繁更新&#xff0c;这个不方便工程管理.另外会序列化成json格式&#xff0c;比如为json的成员建立索引&#xff0c;这都是比较损耗性能。字段太多&#xff0c;moondbjson名太多&#xff0c;导致数据冗余, moongodb频繁按字段更新&…...

介绍一下 ChibiOS

ChibiOS 是一款专为嵌入式系统设计的‌开源实时操作系统&#xff08;RTOS&#xff09;‌&#xff0c;以其‌硬实时性能、轻量化架构和高可移植性‌著称。它广泛应用于无人机、机器人、工业控制等领域&#xff0c;尤其在无人机飞控&#xff08;如 ArduPilot 的某些硬件平台&…...

《Vue Router实战教程》3.动态路由匹配

欢迎观看《Vue Router 实战&#xff08;第4版&#xff09;》视频课程 动态路由匹配 带参数的动态路由匹配 很多时候&#xff0c;我们需要将给定匹配模式的路由映射到同一个组件。例如&#xff0c;我们可能有一个 User 组件&#xff0c;它应该对所有用户进行渲染&#xff0c;…...