如何在Python中提取包含特定字符的字符串

如何在Python中提取包含特定字符的字符串,python,Python,我试图只提取一个包含$character的字符串。基于我使用BeautifulSoup提取的输出的输入 代码 输入 输出应该是这样的 2000 如果输入是你上面写的字符串,我会这样做- price_start = input.find('$') price = input[price_start:].split(' ')[0] 如果像你说的只有一次 备选方案-您可以像那样使用正则表达式- price = re.findall('\S*\$\S*\d', input)[0] price = p

我试图只提取一个包含$character的字符串。基于我使用BeautifulSoup提取的输出的输入

代码

输入

输出应该是这样的

2000

如果输入是你上面写的字符串,我会这样做-

price_start = input.find('$')
price = input[price_start:].split(' ')[0]
如果像你说的只有一次

备选方案-您可以像那样使用正则表达式-

price = re.findall('\S*\$\S*\d', input)[0]
price = price.replace('$', '')

你不需要正则表达式。相反,您可以迭代行和每个单词,检查是否以“$”开头并提取单词:

[word[1:] for line in s.split('\n') for word in line.split() if word.startswith('$') and len(word) > 1]
其中s是你的段落

哪些产出:

['2000']

由于这非常简单,您不需要正则表达式解决方案,因此应满足以下条件:

words=text.split words_with_dollar=[如果单词中的“$”是单词对单词] 印刷字带美元 >>> ['$', '$2000'] 如果不想单独使用美元符号,可以添加如下过滤器:

words_with_dollar=[如果word中的“$”和“$”!=word,则逐字逐句] 印刷字带美元 >>> ['$2000']
在您的输入中有两次出现“$”\S*\$\S*可能会起作用,但也会与单个$匹配。我建议您编写一个正则表达式,用于演示一个正则表达式,然后使用python的re模块提取所需内容。如何从数组中删除$?您的意思是什么@MohammadNurdinI只需要数字,忽略$price=price。替换“$”,我更新了答案:如何从数组中删除$?@MohammadNurdin您可以在列表中添加if条件,第二个版本是这样读的:如果字符串$在单词中,而单词不等于$,则将其附加到列表中。如何从数组中删除$?您需要['2000']?
[word[1:] for line in s.split('\n') for word in line.split() if word.startswith('$') and len(word) > 1]
['2000']