2022年春季讨论13:正则表达式与字符类

需积分: 5 0 下载量 123 浏览量 更新于2024-08-05 收藏 372KB PDF 举报
在"disc13.pdf"讨论文档中,主要探讨了计算机科学课程CS61A在2022年春季学期的第13次讨论中关于正则表达式(Regular Expressions)的概念和应用。正则表达式是一种强大的工具,用于描述满足特定条件的字符串集,对于模式匹配任务非常实用。 讨论的核心内容围绕以下几个关键知识点: 1. **基本正则表达式**:讨论从基础开始,介绍了如何使用简单的正则表达式来匹配像"aardvark"这样的字符序列。这种方法适用于查找特定的子串,但通常需要更复杂的模式来满足实际需求。 2. **在线工具实践**:推荐使用在线资源如regexr.com或regex101.com这类工具,这些平台允许用户实时测试正则表达式,快速得到匹配结果,方便学习和调试。 3. **字符类(Character Classes)**:这是正则表达式中的一个重要概念,通过字符类可以匹配任何一组字符。例如: - `[abc]`:匹配a、b或c中的任意一个字符。 - `[a-z]`:匹配小写字母a到z中的任一字符。 - `[^A-Z]`:匹配除了大写字母A到Z之外的任何字符。 - `\w`:等价于`[A-Za-z0-9_]`,匹配单词字符,包括字母、数字和下划线。 - `\d`:等价于`[0-9]`,匹配任何数字字符。 - `[0-9]`:匹配0到9范围内的单个数字。 - `\s`:匹配任何空白字符,如空格、制表符和换行符。 - `.`:匹配任何单个字符,除非在某些特殊情况下(如`\B`或`\w`)它有其他含义。 这些字符类是构建复杂正则表达式的基础,它们使得模式匹配更加灵活,能够适应各种文本处理场景,如搜索、替换、验证等。 总结来说,本次讨论着重于正则表达式的入门介绍,强调了在线工具在学习和应用中的辅助作用,以及如何利用字符类来编写出强大的文本处理规则。这对于IT专业人士来说,理解和掌握正则表达式对于日常工作中处理文本数据、数据分析和编程语言中的字符串操作具有重要意义。

def train_step(real_ecg, dim): noise = tf.random.normal(dim) for i in range(disc_steps): with tf.GradientTape() as disc_tape: generated_ecg = generator(noise, training=True) real_output = discriminator(real_ecg, training=True) fake_output = discriminator(generated_ecg, training=True) disc_loss = discriminator_loss(real_output, fake_output) gradients_of_discriminator = disc_tape.gradient(disc_loss, discriminator.trainable_variables) discriminator_optimizer.apply_gradients(zip(gradients_of_discriminator, discriminator.trainable_variables)) ### for tensorboard ### disc_losses.update_state(disc_loss) fake_disc_accuracy.update_state(tf.zeros_like(fake_output), fake_output) real_disc_accuracy.update_state(tf.ones_like(real_output), real_output) ####################### with tf.GradientTape() as gen_tape: generated_ecg = generator(noise, training=True) fake_output = discriminator(generated_ecg, training=True) gen_loss = generator_loss(fake_output) gradients_of_generator = gen_tape.gradient(gen_loss, generator.trainable_variables) generator_optimizer.apply_gradients(zip(gradients_of_generator, generator.trainable_variables)) ### for tensorboard ### gen_losses.update_state(gen_loss) ####################### def train(dataset, epochs, dim): for epoch in tqdm(range(epochs)): for batch in dataset: train_step(batch, dim) disc_losses_list.append(disc_losses.result().numpy()) gen_losses_list.append(gen_losses.result().numpy()) fake_disc_accuracy_list.append(fake_disc_accuracy.result().numpy()) real_disc_accuracy_list.append(real_disc_accuracy.result().numpy()) ### for tensorboard ### # with disc_summary_writer.as_default(): # tf.summary.scalar('loss', disc_losses.result(), step=epoch) # tf.summary.scalar('fake_accuracy', fake_disc_accuracy.result(), step=epoch) # tf.summary.scalar('real_accuracy', real_disc_accuracy.result(), step=epoch) # with gen_summary_writer.as_default(): # tf.summary.scalar('loss', gen_losses.result(), step=epoch) disc_losses.reset_states() gen_losses.reset_states() fake_disc_accuracy.reset_states() real_disc_accuracy.reset_states() ####################### # Save the model every 5 epochs # if (epoch + 1) % 5 == 0: # generate_and_save_ecg(generator, epochs, seed, False) # checkpoint.save(file_prefix = checkpoint_prefix) # Generate after the final epoch display.clear_output(wait=True) generate_and_save_ecg(generator, epochs, seed, False)

2023-06-08 上传

将下列代码改为对上海证券交易所网站公告爬取from concurrent.futures import ThreadPoolExecutor import requests headers = { "user-agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.159 Safari/537.36" } def download_pdf(url, code, num, date): print(f'开始下载 data/{code}_{date}_{num}.pdf') resp = requests.get(url, headers=headers) with open(f'E:/深交所pdf/{code}_{date}_{num}.pdf', 'wb') as f: f.write(resp.content) resp.close() print(f'E:/深交所pdf/{code}_{date}_{num}.pdf 下载完毕!') if __name__ == '__main__': domain = 'http://www.sse.cn' with ThreadPoolExecutor(30) as t: with open('target.csv', 'r') as f: lines = f.readlines() for line in lines: param = list(line.split()) form = { 'seDate': [param[3], param[3]], 'stock': [param[0]], 'channelCode': ['listedNotice_disc'], 'pageSize': '50', 'pageNum': '1' } # 获取文件列表的url get_file_list_url = 'http://www.sse.com.cn/disclosure/listedinfo/announcement/json/announce_type.json?v=0.9715488799747511' resp = requests.post(get_file_list_url, headers=headers, json=form) # resp.encoding = 'utf-8' # print(resp.json()) js = resp.json() resp.close() tot = 0 for data in js['data']: tot += 1 download_url = domain + f'/api/disc/info/download?id={data["id"]}' t.submit(download_pdf, url=download_url, code=param[0], num=tot, date=param[3]) print("下载完毕!!!") # doc_id = '' # download_url = domain + f'/api/disc/info/download?id={"c998875f-9097-403e-a682-cd0147ce10ae"}' # resp = requests.get(download_url, headers=headers) # with open(f'{"c998875f-9097-403e-a682-cd0147ce10ae"}.pdf', 'wb') as f: # f.write(resp.content) # resp.close()

2023-06-03 上传