假设我有两个字符串:
string_ex1 = 'AbC024'
string_ex2 = 'aBc24'
string_ex3 = 'AbC24'
string_ex4 = 'aBc24'
Run Code Online (Sandbox Code Playgroud)
如果我相互比较,我想要两个字符串相等的结果。例如 'AbC' == 'aBc', '024' == '24'
我已经知道如果我用 \w+ 和 \d+ 区分它们并分别转换为小写和 int,我可以得到一个结果,说两个字符串是相同的。但我想知道是否有一些更简单的功能来做到这一点。
string1_str = lower(re.findall('\w+', string_ex1))
string1_int = int(re.findall('\d+', string_ex1))
string2_str = lower(re.findall('\w+', string_ex2))
string2_int = int(re.findall('\d+', string_ex2))
if string1_str == string2_str and string1_int == string2_int:
print('identical')
Run Code Online (Sandbox Code Playgroud)
*编辑 比较应该适用于 string_ex1、string_ex2 和 string_ex3、string_ex4
如何SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.从文本中删除该行?
text = (
'SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.HP-UX B.11.00, B.11.11, and B.11.22.',
'SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.HP-UX B.11.00, B.11.04, B.11.11 running',
'SUPPORTED SOFTWARE VERSIONS*: ONLY impacted versions are listed.HP-UX B.11.11 and B.11.23'
)
Run Code Online (Sandbox Code Playgroud) 如何用空字符串替换括号内的单词重复单词?
import re
resource_path = '/mdm/v1/{appId}/templates/{templateId}'
clean_resource_path = re.sub(r"\s*\{[^()]*\}$", '', resource_path)
print(clean_resource_path)
Run Code Online (Sandbox Code Playgroud)
我得到输出,/mdm/v1/但理想情况下我希望输出为/mdm/v1/templates. 我知道我的正则表达式正在用{}空引号替换它们之间的所有内容,但我只想要下一个可用的引号。
在 python 的 re.findall 中试验正则表达式时,我遇到了这个问题:
line = "Lorem ipsum HELLO dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh GOODBYE all"
X = re.findall("(HELLO)(.*)(GOODBYE)", line, flags=re.MULTILINE)
print (y)
Run Code Online (Sandbox Code Playgroud)
这将输出:
('HELLO', ' dolor sit amet, GOODBYE consectetuer adipiscing elit, HELLO sed diam nonummy nibh ', 'GOODBYE')
Run Code Online (Sandbox Code Playgroud)
但我想要的更像是......
[('HELLO', ' dolor sit amet', 'GOODBYE'), ('HELLO', 'sed diam nonummy nibh ', 'GOODBYE')]
Run Code Online (Sandbox Code Playgroud)
因此,不是一次取一个,re.findall(基于我定义模式的方式)似乎正在寻找 HELLO 和 GOODBYE 的第一次和最后一次出现来定义列表元素,然后它放置所有内容中间的其他人进入中间组。
有没有办法按照我的方式获得它?我想也许“序列化” HELLO 和 GOODBYE 对可能会有所帮助,有点像这样:
line = "Lorem ipsum HELLO_1 dolor sit amet, …Run Code Online (Sandbox Code Playgroud) 我有以下文字:
你可能有那个东西,不,你没有,但也许是
我正在尝试编写一个可以匹配所有内容的正则表达式,直到它找到一些特定的词,在本例中为“NO”和“BUT”,如果字符串包含这两个词,则在第一个词处停止:
你可能有那个东西不,你没有,但也许是的,
你可能有那个东西
你可能有你没有的东西但也许是的
你可能有你没有的东西
我正在尝试下面的正则表达式,但问题是它在BUT停止,即使它没有:
(.*)(?:NO|BUT)
Run Code Online (Sandbox Code Playgroud)
匹配上述正则表达式的示例,粗体表示完整匹配,斜体表示组 1:
您可能有那个东西 NO 你没有但也许是
我的期望:
你可能有那个东西,不,你没有,但也许是的
我试图从文件中删除任何数字低于 -2000 的每一行。我对 python 很陌生,很可能我不理解该re模块,也不确定我正在使用的方法。
这是示例文件:
{ "Position": { "X": -1660.313, "Y": -3107.795, "Z": 12.85458 }
{ "Position": { "X": -494.0083, "Y": 57.33647, "Z": 56.59263 }
{ "Position": { "X": -1039.662, "Y": -2641.444, "Z": 36.96656 }
Run Code Online (Sandbox Code Playgroud)
这是我得到的:
with open('file.json','r') as input:
with open("temp.json", 'w') as output:
for line in input:
match = re.search(r'('-'\d+)', line)
my_number = float(match.group())
if my_number < -2000:
output.write(line.strip())
Run Code Online (Sandbox Code Playgroud)
就目前而言,我确信re.search(r'('-'\d+)),'-'是错误的。我也不确定如何正确使用match.group().
如果有人能指导我正确的方向或提出不同的方法,我将不胜感激。
我正在尝试拆分包含 python 函数的字符串,以便生成的输出将单独的函数保留为列表元素。
s='hello()there()'应该拆分为['hello()', 'there()']
为此,我使用正则表达式先行在右括号上拆分,但不在字符串末尾拆分。
虽然前瞻似乎有效,但我无法)按照各种帖子中的建议将结果保留在结果字符串中。简单地用正则表达式分割会丢弃分隔符:
import re
s='hello()there()'
t=re.split("\)(?!$)", s)
Run Code Online (Sandbox Code Playgroud)
这导致:'hello(', 'there()']。
s='hello()there()'
t=re.split("(\))(?!$)", s)
Run Code Online (Sandbox Code Playgroud)
将分隔符包装为一个组会导致)保留为一个单独的元素:与使用该函数的方法['hello(', ')', 'there()']
一样:filter()
s='hello()there()'
u = list(filter(None, re.split("(\))(?!$)", s)))
Run Code Online (Sandbox Code Playgroud)
再次导致括号作为单独的元素:['hello(', ')', 'there()']
如何拆分这样的字符串以使函数在输出中保持完整?
我有一个字符串:
test=' 40 virtual asset service providers law, 2020e section 1 c law 14 of 2020 page 5 cayman islands'
Run Code Online (Sandbox Code Playgroud)
我想匹配数字的所有出现,然后不仅打印数字,还打印数字两侧的三个字符。
目前,使用re我已经匹配了数字:
print (re.findall('\d+', test ))
['40', '2020', '1', '14', '2020', '5']
Run Code Online (Sandbox Code Playgroud)
我希望它返回:
[' 40 v', 'w, 2020e s', 'aw 14 of', 'of 2020 ', 'ge 5 c']
Run Code Online (Sandbox Code Playgroud) 我想从以下文本中提取“name=”之后的字符串。我已经编写了以下正则表达式,但它并没有真正起作用。所需的输出是[Taal, Muntinlupa city]
text = [ "id='00e5885868b4d7ed', url='https://api.twitter.com/1.1/geo/id/00e5885868b4d7ed.json', place_type='city', name='Taal', full_name='Taal, Calabarzon', country_code='PH', country='Republic of the Philippines'",
"id='00c699d656122ebe', url='https://api.twitter.com/1.1/geo/id/00c699d656122ebe.json', place_type='city', name='Muntinlupa City', full_name='Muntinlupa City, National Capital Region', country_code='PH', country='Republic of the Philippines']
matched_vals = [re.findall(r'(?<=name\=).*(?=\s)',tweet) for tweet in text]
Run Code Online (Sandbox Code Playgroud) 仅当.get不在字符串之前时,我才尝试匹配字符串ARIBABA 。
例子:
ARIBABA = config.get('SOMETHING', 'ARIBABA').lower()
我已经尝试过这个(在下面),但它与任何内容都不匹配。
^(.get)\bARIBABA\b
在python程序中,我想过滤主要是数字的字符串,例如表中的实验结果等。
例如,必须过滤“year 2004 2005 2006”或“dimension 2.343m 3.85m 343.5m”等字符串。
我知道如何检查字符串是否包含数字,any(i.isdigit() for i in str)但如何计算它们?我可以用循环来做到这一点,但我寻找一个类似的函数来内联完成它。