- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我想在 python 中提取列表中没有空格后跟数字的字符串的一部分。
# INPUT
text = ['bits', 'scrap 1.2', 'bits and pieces', 'junk 3.4.2']
# EXPECTED OUTPUT
output = ['bits', 'scrap', 'bits and pieces', 'junk']
我设法使用 re.sub 或 re.split 做到了这一点:
output = [re.sub(" [0-9].*", "", t) for t in text]
# OR
output = [re.split(' \d',t)[0] for t in text]
当我尝试使用 re.search 和 re.findall 时,它返回空列表或空结果。
[re.search('(.*) \d', t) for t in text]
#[None, <_sre.SRE_Match object; span=(0, 7), match='scrap 1'>, None, <_sre.SRE_Match object; span=(0, 6), match='junk 3'>]
[re.findall('(.*?) \d', t) for t in text]
#[[], ['scrap'], [], ['junk']]
任何人都可以帮助我使用可以为 re.search 和 re.findall 返回预期输出的正则表达式吗?
最佳答案
您只能删除字符串末尾的数字和点子字符串
import re
text = ['bits', 'scrap 1.2', 'bits and pieces', 'junk 3.4.2']
print([re.sub(r'\s+\d+(?:\.\d+)*$', '', x) for x in text])
# => output = ['bits', 'scrap', 'bits and pieces', 'junk']
参见 Python demo
模式是
\s+
- 1+ 个空格(注意:如果这些数字可以“粘”到其他文本,请将 +
(一次或多次出现)替换为 *
量词(零次或多次出现))\d+
- 一位或多位数字(?:\.\d+)*
- 0 个或多个序列
\.
- 一个点\d+
- 一位或多位数字$
- 字符串结尾。参见 regex demo .
要对 re.findall
做同样的事情,您可以使用
# To get 'abc 5.6 def' (not 'abc') from 'abc 5.6 def 6.8.9'
re.findall(r'^(.*?)(?: \d[\d.]*)?$', x) #
# To get 'abc' (not 'abc 5.6 def') from 'abc 5.6 def 6.8.9'
re.findall(r'^(.*?)(?: \d.*)?$', x) #
参见 this regex demo .
但是,由于 .*?
构造,此正则表达式不够高效。这里,
^
- 字符串的开始(.*?)
- 第 1 组:除换行符以外的任何零个或多个字符(使用 re.DOTALL
匹配所有字符)尽可能少(以便可以在每个位置测试下一个可选组)(?:\d[\d.]*)?
- 可选的非捕获组匹配
- 一个空格\d
- 一个数字[\d.]*
- 零个或多个数字或 .
个字符.*
- 除换行字符外的任何 0+ 个字符,尽可能多$
- 字符串结尾。关于python正则表达式返回空字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48762524/
我正在尝试用 Java 构建一个字符串,该字符串的长度最多为 3,最少为 1。 我正在根据整数数组的内容构建字符串,如果数组的内容为 -1,我想在字符串中输出一个空字符。否则字符串将包含整数的字符版本
我有一个类,其中有一个方法可以在字符串中包含 NUL 字符的情况下终止程序。具体表达是这样的: stringVar.indexOf('\u0000') < 0 这个字符串是通过 Scanner 从用户
我有一个 wchar_t 数组。我需要在数组中的特定位置添加一个 unicode 空字符。 wchar_t var1[100]; var1[79] = '\u0000'; 我尝试了上面的方法,但出现以
好吧,这听起来可能是重复的,但我已经尝试了所有可能性,例如 str.strip()、str.rstrip()、str.splitline (),还 if-else 检查像: if str is not
System.out.println("-----------------------------------------------------------"); System.out.pr
我有一个奇怪的问题。我从公司内部的许多不同应用程序接收数据,并将这些数据显示在网站上。根据发送数据的系统,数据本身可能在字符串中包含一些奇怪的字符。我的问题是我有一个用户可以搜索以允许其中包含此数据的
我遇到了 aSSL ,这似乎有几年历史了,想知道是否有人有其他“安全”AJAX 连接代码示例?显然,这不如使用 SSL 证书安全,但使用 null character SSL在那里进行攻击(最近针对
我有一个类似于以下内容的 pyspark 数据框: df = sql_context.createDataFrame([ Row(a=3, b=[4,5,6],c=[10,11,12], d='b
我有以下要执行的查询: MyModel.objects.annotate(current_name=Coalesce('nickname', 'name')).order_by('current_na
每当 rails 变量等于 nil(或者实际上每当我使用 rails 代码(参见第 3 个代码示例))时,我的 html 中就会得到一串空字符。 new.html.haml %h1.editable.
我是一名优秀的程序员,十分优秀!