在python中,在关键字前加上逗号并退格
我需要退格并在文件中的每个“https:”实例前添加一个逗号。我相信正则表达式可以做到这一点,但我不知道如何做到 下面这行是我想要的在python中,在关键字前加上逗号并退格,python,re,Python,Re,我需要退格并在文件中的每个“https:”实例前添加一个逗号。我相信正则表达式可以做到这一点,但我不知道如何做到 下面这行是我想要的 2021-05-11 23:39:30,https://www.tiktokv.com/share/video/ 目前的格式是: 2021-05-11 23:35:41 https://www.tiktokv.com/share/video/ 使用带有模式r“(\n)(?=https)”的正则表达式 Ex: s = """2021
2021-05-11 23:39:30,https://www.tiktokv.com/share/video/
目前的格式是:
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
使用带有模式
r“(\n)(?=https)”的正则表达式
Ex:
s = """2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/"""
print(re.sub(r"(\n)(?=https)", r",", s))
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
['2021-05-11 23:35:41,https://www.tiktokv.com/share/video/\n',
'2021-05-11 23:35:41,https://www.tiktokv.com/share/video/\n',
'2021-05-11 23:35:41,https://www.tiktokv.com/share/video/']
输出:
s = """2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/"""
print(re.sub(r"(\n)(?=https)", r",", s))
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
['2021-05-11 23:35:41,https://www.tiktokv.com/share/video/\n',
'2021-05-11 23:35:41,https://www.tiktokv.com/share/video/\n',
'2021-05-11 23:35:41,https://www.tiktokv.com/share/video/']
没有正则表达式
from io import StringIO
s = StringIO("""2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/""")
res = []
for idx, line in enumerate(s, 1):
if idx % 2 == 0:
res[-1] += f',{line}'
else:
res.append(line.strip())
print(res)
输出:
s = """2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/
2021-05-11 23:35:41
https://www.tiktokv.com/share/video/"""
print(re.sub(r"(\n)(?=https)", r",", s))
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
2021-05-11 23:35:41,https://www.tiktokv.com/share/video/
['2021-05-11 23:35:41,https://www.tiktokv.com/share/video/\n',
'2021-05-11 23:35:41,https://www.tiktokv.com/share/video/\n',
'2021-05-11 23:35:41,https://www.tiktokv.com/share/video/']
我想你可以读一下文件,把所有的行添加到一个列表中。然后使用,'.join()
格式化新字符串并将其写入另一个文件
file = open('test.txt')
rows = [row.strip() for row in file]
newfile = open('test2.txt','w')
newfile.write(','.join(rows))
更改时间戳的规则是什么?严格来说,正则表达式本身只进行匹配,不做任何更改。当您使用re.sub()
或sed
时,这是一个额外的层,在正则表达式本身的范围之外处理正则表达式的结果。@CharlesDuffy我无法匹配“https”,只需使用另一个非正则表达式的方法退格即可,这里更大的问题是,这描述的是您想要构建的软件,而不是您构建它的尝试,或者在过程中遇到的任何特定问题。@madil26但在您的示例中确实如此这在一定程度上非常有效,但我没有提到视频链接后有一条空行。此外,该文件有30k行长,因此使用字符串输入将不起作用。我使用字符串输入作为上述代码段的演示,您可以使用文件
对象