【问题标题】:Regex Python - Modify random generated string正则表达式 Python - 修改随机生成的字符串
【发布时间】: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.replacestr.index 和字符串索引str[i] 似乎就足够了。
  • 请修复您的代码块;部分代码超出了代码块格式,使内容更难阅读。
  • 完成,抱歉,谢谢,您认为没有正则表达式?甚至一个字一个字?
  • 您不需要检查文件是否存在,然后将其删除。 w 将创建一个文件,如果存在,则删除其所有内容。您还针对已关闭的文件句柄运行 re.search - 这不会给您预期的结果。

标签: python regex string random


【解决方案1】:

至少,你应该改一下

file=file.read().split(',')
print file

还有这个

    if re.search(r"THIS IS A STRING", file):
        print("success!")

到这里

data=file.read().split(',')
print data

还有这个

    if re.search(r"THIS IS A STRING", data):
        print("success!")

当您打开输出文件时,您会丢失文件内容:

else:
    file = open("newfile.txt", "w")

【讨论】:

  • 您好,谢谢,但我不明白,您的更改是针对“file.dat”文件,而不是针对随机生成的文件?
  • 我修改了答案,向您展示了覆盖文件变量的代码。
  • 所以,我必须做点别的事情吗?评论那条 else 语句对吗?
  • 刚刚应用你的答案是一样的,如果我评论 else 语句怎么办?我必须这样做吗?修改那个?
  • 您必须使用不同的变量来存储文件内容。在这种情况下,我建议使用名称data
猜你喜欢
  • 1970-01-01
  • 2013-03-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-11
  • 2016-05-04
  • 1970-01-01
相关资源
最近更新 更多