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倍

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/75412.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【antd + vue】Tree 树形控件:默认展开所有树节点 、点击文字可以“选中/取消选中”节点

一、defaultExpandAll 默认展开所有树节点 1、需求&#xff1a;默认展开所有树节点 2、问题&#xff1a; v-if"data.length"判断的层级不够&#xff0c;只判断到了物理那一层&#xff0c;所以只展开到那一层。 3、原因分析&#xff1a; 默认展开所有树节点, 如果是…

Notepad++安装Markdown实时预览插件

具体操作 打开notepad -> 插件 -> 插件管理 -> 可用 -> “Markdown Panel” -> 安装&#xff0c;安装完成后工具栏点击"Markdown Panel"按钮。 注意&#xff1a;由于网络等原因可能安装失败 导致工具栏没出现""Markdown Panel"按钮&am…

OpenHarmony如何编译安装系统应用(以settings设置为例)

开发环境 1.OpenHarmony 2.DevEco Studio 3 .Full Sdk 实现步骤 1.获取设置应用源码 https://gitee.com/openharmony/applications_settings/tree/OpenHarmony-v5.0.0-Release/ 2,使用 DevEco Studio 和 Full SDK对系统应用进行签名,默认工程是未配置签名的状态,所构建…

【ESP32-microros(vscode-Platformio)】

一、步骤 1、目前支持ESP32 2、同一个局域网 3、上位机要安装代理&#xff08;电脑或者linux设备&#xff09; 4、可直接通过USB下载&#xff0c;也可以使用官方烧录工具&#xff0c;具体的分区表地址要从USB烧录的时候日志查看&#xff0c;一共四个文件&#xff0c;第三个…

.NET MAUI教程2-利用.NET CommunityToolkit.Maui框架弹Toast

在上一篇博文的基础上继续操作&#xff1a; .NET MAUI教程1-入门并发布apk包安装到真机-CSDN博客 本文内容参考&#xff1a; Toast - .NET MAUI Community Toolkit - Community Toolkits for .NET | Microsoft Learn 1 在NuGet包管理器中安装 MAUI Community Toolkit&…

软件工程(应试版)图形工具总结(二)

遇到的问题,都有解决方案,希望我的博客能为你提供一点帮助。 教材参考《软件工程导论(第六版)》 七、 层次图(H图)与HIPO图 1、概述 1.1、层次图(Hierarchy Chart / H图) ​核心定义 ​目的:描述软件系统的层次结构,体现模块的从属关系。​适用阶段:自顶向下设计…

java基础 流(Stream)

Stream Stream 的核心概念核心特点 Stream 的操作分类中间操作&#xff08;Intermediate Operations&#xff09;终止操作&#xff08;Terminal Operations&#xff09; Stream 的流分类顺序流&#xff08;Sequential Stream&#xff09;并行流&#xff08;Parallel Stream&…

EAL4+ vs EAL7:高安全场景下的等级选择策略

在数字化浪潮席卷全球的当下&#xff0c;信息安全已然成为各行各业稳健发展的基石。特别是在高安全需求场景中&#xff0c;选择契合的安全等级成为保障信息资产安全的关键。EAL&#xff08;Evaluation Assurance Level&#xff09;评估保障级作为衡量信息技术产品安全保障能力的…

【Java集合】TreeSet、TreeMap源码解读

参考笔记&#xff1a;java TreeSet 和 TreeMap 源码解读-CSDN博客 目录 1.前言 2.红黑树 2.1 红黑树的五大性质 2.2 节点颜色的初始设置 2.3 插入新节后的调整 2.4 删除结构后的调整 2.5 排序规则 2.6 设计红黑树的原因 3.TreeSet简介、底层实现 3.1 TreeSet简介 3.…

【C++初学】C++核心编程技术详解(二):类与继承

函数提高 3.1 函数默认参数 函数的形参可以有默认值&#xff0c;调用时可以省略这些参数。 示例代码&#xff1a; int func(int a, int b 10, int c 10) {return a b c; }int main() {cout << "ret " << func(20, 20) << endl;cout <<…

Next.js + Droplet:高并发视频内容平台部署与优化扩展实战

在构建在线服务时&#xff0c;无论你是开发者还是企业技术负责人&#xff0c;扩展性和稳定性始终是绕不开的核心挑战。尤其在涉及高并发访问、大量数据传输和持续内容分发的场景中&#xff0c;系统架构的设计直接决定了用户体验与业务成效。 本文将以视频点播&#xff08;Video…

Python爬虫第13节-解析库pyquery 的使用

目录 前言 一、pyquery 初始化 1.1 字符串初始化 1.2 URL 初始化 1.3 文件初始化 二、基本 CSS 选择器 三、pyquery 查找节点 3.1 子节点 3.2 父节点 3.3 兄弟节点 四、遍历 五、获取信息 5.1 获取属性 5.2 获取文本 六、节点操作 6.1 addClass 和 removeClass…

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

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

python 语言 设计模式

python 语言 设计模式 设计模式是指在软件开发过程中,针对反复出现的问题所总结归纳出的通用解决方案。以下是一些常见的Python语言设计模式: 目录 python 语言 设计模式创建型模式结构型模式行为型模式创建型模式 单例模式 定义:保证一个类只有一个实例,并提供一个全局访…

QT QML布局

一、‌锚点布局(Anchors) 通过定义元素与其他元素或父容器的锚点关系实现定位,支持动态调整和边距控制‌。 Rectangle {anchors.left: parent.left // 左对齐父容器anchors.top: parent.top // 顶部对齐父容器anchors.margins: 10 // 统一设置四周边距width: …

【力扣03】无重复字符的最长子串

题目 给定一个字符串 s &#xff0c;请你找出其中不含有重复字符的 最长 子串 的长度。 示例 1: 输入: s "abcabcbb" 输出: 3 解释: 因为无重复字符的最长子串是 "abc"&#xff0c;所以其长度为 3。示例 2: 输入: s "bbbbb" 输出: 1 解释:…

一文介绍阿里32B推理模型

什么是QwQ-32B&#xff1f; QwQ-32B并非普通的聊天机器人模型&#xff0c;而是推理模型。推理模型专注于逻辑拆解问题、分步推导&#xff0c;并输出结构化答案。 通过下面的示例&#xff0c;我们可以直观看到QwQ-32B的思考过程&#xff1a; qwq-32b思考过程 如果你需要写作辅…

AutoGen深度解析:从核心架构到多智能体协作的完整指南

AutoGen是微软推出的一个革命性多智能体(Multi-Agent)框架&#xff0c;它通过模块化设计和灵活的对话机制&#xff0c;极大地简化了基于大型语言模型(LLM)的智能体系统开发。本文将深入剖析AutoGen的两个核心模块——core基础架构和agentchat多智能体对话系统&#xff0c;带您全…

HTML的svg元素

<svg>元素 <svg>是一种用于描述二维矢量图形的 XML 格式&#xff0c;可以直接嵌入 HTML 文档中。 <svg>基本用法 <svg>的几种基本用法,包括圆形&#xff0c;正方形&#xff0c;三角形&#xff0c;直线 &#xff0c;折线等 <body><svg widt…

Qt 子项目依赖管理:从原理到实践的最佳分析:depends还是 CONFIG += ordered

1. 问题背景 在Qt项目开发中&#xff0c;当一个工程包含多个子项目&#xff08;如库、插件、测试模块&#xff09;时&#xff0c;如何正确管理它们的构建顺序和依赖关系&#xff1f; 如&#xff1a; 在开发一个包含核心库&#xff08;core&#xff09;、GUI模块&#xff08;g…