<p>如果你需要遵守诺言,你可以使用</p>
<pre class="lang-py prettyprint-override"><code>reuters2['story_text'].str.replace(r'(?s)^.*?(?=\(Reuters\)\s*-)', '')
</code></pre>
<p>如果你<em>不</em>需要保留单词,你可以使用</p>
<pre class="lang-py prettyprint-override"><code>reuters2['story_text'].str.replace(r'(?s)^.*?\(Reuters\)\s*-\s*', '')
</code></pre>
<p>或者,像这样使用<code>Series.str.split</code>:</p>
<pre class="lang-py prettyprint-override"><code>import pandas as pd
df = pd.DataFrame({'story_text':['Some rubbish ... (Reuters) - Text']})
df['story_text'].str.split(r'\(Reuters\)\s*-', n=1).str[-1]
# => 0 Text
</code></pre>
<p><strong>详细信息</strong></p>
<ul>
<li><code>(?s)</code>-DOTALL修饰符,使<code>.</code>匹配任何字符</li>
<li><code>^</code>-字符串的开头</li>
<li><code>.*?</code>-任何0个或更多字符尽可能少</li>
<li><code>\(Reuters\)</code>-文字<code>(Reuters)</code>文本</li>
<li><code>(?=\(Reuters\)\s*-)</code>-与紧跟<code>(Reuters)</code>、0+空格和<code>-</code>的位置匹配的正向前瞻</li>
<li><code>\s*-\s*</code>-<code>-</code>用0+空格括起来</李>
</ul>
<p>见<a href="https://regex101.com/r/4No1iv/1" rel="nofollow noreferrer">regex demo #1</a>和<a href="https://regex101.com/r/4No1iv/2" rel="nofollow noreferrer">regex demo #2</a></p>
<p><code>split</code>解决方案使用一个简单得多的正则表达式,<code>\(Reuters\)\s*-</code>并将字符串拆分为两部分(因为<code>n=1</code>是定义的,<code>n</code>是拆分的数量),并且<code>.str[-1]</code>获取最后一个(这里的第二个)项</p>