【发布时间】:2017-03-14 05:43:15
【问题描述】:
我需要从文件中读取,两个字符串,一个来自文件的“静态”字符串,以及一个随机动态生成的,也写入一个文件。
然后,将随机生成的字符串中的一个字符替换为另一个随机字符。
然后重复这个过程。直到我得到文件上的“静态”字符串,在本例中为“这是一个字符串”。
我很难实现这一目标,这就是我目前所拥有的:
import string
import random
import os
import re
file = open('file.dat', 'r')
file=file.read().split(',')
print file
def id_generator(size=28, chars=string.ascii_uppercase + string.digits):
return ''.join(random.choice(chars) for _ in range(size))
if os.path.exists('newfile.txt'):
os.remove('newfile.txt')
else:
file = open("newfile.txt", "w")
file.write(id_generator())
file.close()
if re.search(r"THIS IS A STRING", file):
print("success!")
我正在尝试使用re 模块来实现这一点,因为它应该逐个字符地读取,找到它在随机生成的字符串中的位置。
不只是比较,还要找到匹配字符的位置(如果有的话)
file.dat 文件包含THIS IS A STRING 字符串,我称之为“静态”字符串,它不会改变,它应该由随机生成的进程匹配。
newfile.txt 打印随机生成的字符串。
那么,简而言之,如何逐个字符读取file.dat 上的字符串,newfile.txt 上的随机生成字符串也是如此?
我希望我已经解释过了。
【问题讨论】:
-
不知道为什么你需要正则表达式,虽然我不完全理解目标。但是
str.replace、str.index和字符串索引str[i]似乎就足够了。 -
请修复您的代码块;部分代码超出了代码块格式,使内容更难阅读。
-
完成,抱歉,谢谢,您认为没有正则表达式?甚至一个字一个字?
-
您不需要检查文件是否存在,然后将其删除。
w将创建一个文件,如果存在,则删除其所有内容。您还针对已关闭的文件句柄运行re.search- 这不会给您预期的结果。
标签: python regex string random