如何从字符串中的特定单词开始提取文本?

时间:2019-02-20 11:47:39

标签: python regex strip

因此,我尝试仅从该字符串中提取地址,但是我遇到了麻烦。字符串如下所示:

1040 S. Vintage Ave.
Building A Ontario, CA 91761
United States Phone: 9099725134 Fax: 9099065401

Web: http://www.aareninc.com

我只想提取单词'Phone'前面的文本,所以只提取地址。

我尝试过使用strip('Phone'),然后使用数组的第一个元素,但是它给了我该字符串的第一个字母。

address = contacts.strip('Phone')
print(address[0])

9 个答案:

答案 0 :(得分:1)

使用拆分功能,而不是剥离。

address = contacts.split('Phone')
print(address[0]) 

这应该有效。

答案 1 :(得分:1)

考虑到您有类似的东西

st = '1040 S. Vintage Ave.Building A Ontario, CA 91761 United States Phone: 9099725134 Fax: 9099065401 Web: http://www.aareninc.com'

v = st.split("Phone"))
print(v[0])

这将适用于Python3。 如果您使用的是Python2,则可以避免在print语句中使用括号。

答案 2 :(得分:0)

正如@JonClements所说,解决方案是:

contacts.partition('Phone')[0]

答案 3 :(得分:0)

对于该任务,您可以使用所谓的零长度断言(在这种情况下为正向超前)

import re
text = '''1040 S. Vintage Ave.
Building A Ontario, CA 91761
United States Phone: 9099725134 Fax: 9099065401 

Web: http://www.aareninc.com'''
adress = re.findall('.*(?=Phone)',text,re.DOTALL)[0]
print(adress)

输出

1040 S. Vintage Ave.
Building A Ontario, CA 91761
United States

请注意,如果text不包含Phone子字符串,则会导致错误。请注意re.DOTALL标志,因此.也匹配换行符(/n),没有该标志的输出将是Unites States

答案 4 :(得分:0)

我希望这行得通。

在python 2.7上测试

string = r"1040 S. Vintage Ave. Building A Ontario, CA 91761 United States Phone: 9099725134 Fax: 9099065401 Web: http://www.aareninc.com"

f = re.split(' (?=Phone:)', string)

print 'String before Phone:', f[0]

答案 5 :(得分:0)

使用正则表达式:

import re
re.split('(Phone)', strng)
['1040 S. Vintage Ave. Building A Ontario, CA 91761 United States ',
'Phone',
': 9099725134 Fax: 9099065401 Web: http://www.aareninc.com']

答案 6 :(得分:0)

假设您的字符串定义为:

contacts = """1040 S. Vintage Ave.
Building A Ontario, CA 91761
United States Phone: 9099725134 Fax: 9099065401

Web: http://www.aareninc.com"""

contacts.split('Phone')[0]contacts.partition('Phone')[0]必须给您相同的结果。

答案 7 :(得分:0)

您最初可以拆分以获取“电话”两侧的字符串列表。 然后,您想使用strip删除前导和尾随空白。

contacts.split('Phone')[0].strip()

这有效。

答案 8 :(得分:0)

您可以使用re.search()

import re

adress = re.search(r'^(.+?)\sPhone', s, flags=re.MULTILINE | re.DOTALL)
print(adress.group(1))

# 1040 S. Vintage Ave.
# Building A Ontario, CA 91761
# United States