用正则匹配生成固定格式的随机文本python

生成文本

导入python包

import random
import string
import numpy as np
import pandas as pd

生成随机数字–年龄

age=[]
for i in range(10, 100):
    num = random.randint(10,100)
    age.append(num)
#age  

生成随机英文名

name=[]
for i in range(100):
    name_str = ''.join(random.sample(string.ascii_letters, random.randint(3, 5)))
    name.append(name_str.capitalize())
#name

生成随机城市名

city=[]
for i in range(100):
    city_str=''.join(random.sample(string.ascii_letters, random.randint(5,7)))
    city.append(city_str.upper())
#city
#age
  1. age默认为2位数;
  2. name默认为首字母大写的3-5个英文字母;
  3. city默认为5-7个大写英文字母;

正则匹配

  1. 当你要匹配 一个/多个/任意个 数字/字母/非数字/非字母/某几个字符/任意字符,想要 贪婪/非贪婪 匹配,想要捕获匹配出来的 第一个/所有 内容的时候,python正则表达式小抄:
    by 寒小阳(hanxiaoyang.ml@gmail.com)

构造重复字符串

# data_raw
Hi, I'm [Bob] and I from {SZ}, I'm (18) years old.
Hello, I am [RPI], I'm (20) years old and I come from {GZ}.
I born in {YuLin}. I'm (24), just call me [ATA].
I don't want to tell you my name, but I from {ShangHai}.
Hey My name is [CZW], I live in {HangZhou}, what's your name?
Hi, I'm [Tom] and I from {RY}, I'm (78) years old.
Hello, I am [ABG], I'm (40) years old and I come from {HU}.
I born in {Liuzhou}. I'm (24), just call me [HYU].
I don't want to tell you my name, but I from {Nanchang}.
Hey My name is [YUN], I live in {WUHAN}, what's your name?
Hi, I'm [Lily] and I from {BJ}, I'm (6) years old.
Hello, I am [Yin], I'm (23) years old and I come from {guigang}.
## 构造重复字符串
with open('data_raw.txt') as f:
    essay=f.read()

import re
sen=essay.strip().split('\n')
train_text=[]
for i in range(len(age)):
    for row in sen:
        str1=row
        ages = re.sub(r'\(.*?\)','(%s)'%(random.choice(age)), str1)
        names = re.sub(r'\[.*?\]',f'[{random.choice(name)}]', str1)
        cities = re.sub(r'\{.*?\}','{%s}'%(random.choice(city)), str1)
        train_text.append(str1)
        
#train_text
random.shuffle(train_text)

如此,便可自己构造数据来进行NLP处理。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值