有没有一种方法可以根据条件来.replace()某些字符串片段?

2024-05-16 10:47:55 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在从一个.txt文件中导入一些David Foster Wallace文件,这些文件是我从PDF文件中复制粘贴的。有些词从书页上掉了下来,所以以

"interr- upted"

我打算用如下方法消毒:

with open(text, "r", 0) as bookFile:
    bookString = bookFile.read().replace("- ", "")

除了。。。这个人在写作中也使用了一些奇怪的结构。比如:

"R - - d©"

对于品牌名称bug spray Raid©。很明显,我只剩下“rd©”,但是有没有办法使它成为“-”的.replace()实例,而不是“-”的实例?或者我需要把所有的东西都变成列表,并以这种方式对所有的东西进行操作吗?谢谢。你知道吗


Tags: 文件实例方法txtpdfwithreplacedavid
1条回答
网友
1楼 · 发布于 2024-05-16 10:47:55

可以使用lookbehinds和lookaheads来确保仅替换需要替换的引用:

>>> import re
>>> regex_pattern = '(?<=[a-z])(- )(?=[a-z])'
>>> re.sub(regex_pattern, '', "interr- upted", re.I)
'interrupted'

而且

>>> re.sub(regex_pattern, '', "R - - d©")
'R - - d©'

后者不受影响。你知道吗

网友
2楼 · 发布于 2024-05-16 10:47:55

可以使用带有负lookback断言的正则表达式来检查前一个字符,^{}用空字符串替换匹配项。你知道吗

'(?<! )- '是一个正则表达式,匹配'- '而不是的所有实例,前面有一个空格字符(有关语法,请参阅this部分)。re.sub('(?<! )- ', '', input_string)将用''(空字符串)替换input_string中所有出现的'(?<! )- '模式,并返回结果。你知道吗

示例:

In [1]: import re

In [2]: re.sub('(?<! )- ', '', 'interr- upted')
Out[2]: 'interrupted'

In [3]: re.sub('(?<! )- ', '', 'R - - d©')
Out[3]: 'R - - d©'
网友
3楼 · 发布于 2024-05-16 10:47:55

这是你需要的吗?你知道吗

In [23]: import re
In [24]: re.sub(r'- ', '', '"R - - d"')
Out[24]: '"R d"'

This链接可以帮助您。你知道吗

HTH公司

相关问题 更多 >