Python 将句子拆分为单独的字符串,其中句子以大写字母开头
基本上,我想把下面的字符串分成两个单独的字符串,这样: 输入: 'LIPCIUS,A.接地至3b(1-2 FBF);亚扪人前进到第二位。莫贝格挥棒三振(2-2 BSSFBS)。' 输出: [LIPCIUS,A.接地到3b(1-2 FBF);阿蒙斯前进到第二。”, “莫贝格三振挥杆(2-2个BSSFBS)。” 我的新句子总是以大写字母开头(即球员的名字)。下面是我尝试使用的代码:Python 将句子拆分为单独的字符串,其中句子以大写字母开头,python,regex,Python,Regex,基本上,我想把下面的字符串分成两个单独的字符串,这样: 输入: 'LIPCIUS,A.接地至3b(1-2 FBF);亚扪人前进到第二位。莫贝格挥棒三振(2-2 BSSFBS)。' 输出: [LIPCIUS,A.接地到3b(1-2 FBF);阿蒙斯前进到第二。”, “莫贝格三振挥杆(2-2个BSSFBS)。” 我的新句子总是以大写字母开头(即球员的名字)。下面是我尝试使用的代码: import re string = 'LIPCIUS, A. grounded out to 3b (1-2 FB
import re
string = 'LIPCIUS, A. grounded out to 3b (1-2 FBF); AMMONS advanced to second. MOBERG struck out swinging (2-2 BSSFBS).'
x = re.findall("[A-Z].*?[\.!?]", string, re.DOTALL)
print(x)
我的代码当前输出以下内容,列表中的第一个字符串不准确:
['LIPCIUS, A.', 'FBF); AMMONS advanced to second.', 'MOBERG struck out swinging (2-2 BSSFBS).']
it should be ['LIPCIUS, A. grounded out to 3b (1-2 FBF); AMMONS advanced to second.','MOBERG struck out swinging (2-2 BSSFBS).']
下面的正则表达式应该适用于您,添加了大写字母或结尾的可选字符
$
后跟
,以避免在A.
和B.
import re
string = 'LIPCIUS, A. grounded out to 3b (1-2 FBF); AMMONS advanced to second. MOBERG struck out swinging (2-2 BSSFBS).'
x = re.findall("[A-Z].*?[\.!?]\s?(?=[A-Z]|$)", string, re.DOTALL)
# ['LIPCIUS, A. grounded out to 3b (1-2 FBF); AMMONS advanced to second. ', 'MOBERG struck out swinging (2-2 BSSFBS).']
下面的正则表达式应该适用于您,添加了大写字母或结尾的可选字符
$
后跟
,以避免在A.
和B.
import re
string = 'LIPCIUS, A. grounded out to 3b (1-2 FBF); AMMONS advanced to second. MOBERG struck out swinging (2-2 BSSFBS).'
x = re.findall("[A-Z].*?[\.!?]\s?(?=[A-Z]|$)", string, re.DOTALL)
# ['LIPCIUS, A. grounded out to 3b (1-2 FBF); AMMONS advanced to second. ', 'MOBERG struck out swinging (2-2 BSSFBS).']
它只是不包括每个想要的输出项目后的点,但我想它不会打扰你
它只在每个想要的输出项后面不包括点,但我想它不会打扰您。所以您希望将AMMONS提升到第二个。作为另一个字符串?就我而言,如果它保留在第一个字符串中就可以了。我只是想把字符串分成两个句子,其中一个新的句子是通过字符序列来识别的。A'或'。B',以防万一,就是一个句号,后跟一个空格,后跟一个大写字母。然而,我很好奇,我想作为一种替代选择,你将如何实现这一目标。试着用一个问题尽可能多地学习!也许你可以告诉我们什么是预期的输出,以使其清晰。预期的输出已包含在内,因此你希望将弹药提升到第二个。作为另一个字符串?就我而言,如果它保留在第一个字符串中就可以了。我只是想把字符串分成两个句子,其中一个新的句子是通过字符序列来识别的。A'或'。B',以防万一,就是一个句号,后跟一个空格,后跟一个大写字母。然而,我很好奇,我想作为一种替代选择,你将如何实现这一目标。试着用一个问题尽可能多地学习!也许你可以告诉我们什么是预期的输出,以使其清晰。预期的输出已经包括在内。非常好,正是我所需要的。谢谢太好了,正是我需要的。谢谢谢谢这同样有效,正如您所提到的,唯一的区别是句点不包括在第一个字符串中。
re.split(r')(?我如何修改您上一条注释中的语法,以解释句点后跟空格后跟数字的情况,例如“.0”或“.3”?类似于:re.split(r')(?事实上,我已经解决了。这是有效的:re.split(r'[.][…](?=[A-Z]+\b)|[.][…](?=[0-9]+\b]),谢谢!这也是有效的,正如你提到的,唯一的区别是句点不包括在第一个字符串中。re.split(r'(?我将如何修改您上一条评论中的语法,以解释以下情况:句点后跟空格后跟数字,例如“.0”或“.3”?类似于:re.split(r’(?事实上,已经解决了。这是有效的:re.split(r’[.])(?=[a-Z]+\b)|[.][(?=[0-9]+\b]),s)