擅长:python、mysql、java
<p>使用正查找确保点前面有一个数字-<code>sep='(?<=\d)\.|\t'</code></p>
<p>例如:</p>
<pre><code>import pandas as pd
import io
columns = ["Rank", "ID", "Description"]
sighits_section = '''1. NC_002523_1\tSerratia entomophila plasmid pADAP, complete sequence.
2. NZ_CM003366_0\tPantoea ananatis strain CFH 7-1 plasmid CFH1-7plasmid2, whole genome shotgun sequence.
3. NZ_CP014491_0\tEscherichia coli strain G749 plasmid pG749_3, complete sequence.
4. NC_015062_0\tRahnella sp. Y9602 plasmid pRAHAQ01, complete sequence.'''.splitlines()
tab = pd.read_table(io.StringIO(u'\n'.join([row.rstrip('.') for row in sighits_section])),
sep='(?<=\d)\.|\t',
engine='python',
names=columns)
print(tab)
</code></pre>
<p>印刷品</p>
^{pr2}$
<p>为了安全起见,您可能希望在点旁边添加空格作为分隔符-<code>sep='(?<=\d)\.\s|\t'</code>-以减轻在描述中出现<code>10.1</code>的情况。这可不是防弹的。在</p>
<p>更安全的是,当您一次只处理一行数据时,您可以使用<code>sep='(?<=^\d)\.\s|\t'</code>添加一个断言,即数字也是字符串中的第一个字符。但是,这将在高于10的数字上崩溃。在</p>