Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何从字符串中的特定单词开始提取文本?_Python_Regex_Strip - Fatal编程技术网

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

Python 如何从字符串中的特定单词开始提取文本?,python,regex,strip,Python,Regex,Strip,所以我试着只从这个字符串中提取地址,但是我遇到了问题。这是字符串的外观: 1040 S.Vintage大道。 加利福尼亚州安大略省A栋91761 美国电话:9099725134传真:9099065401 网状物:http://www.aareninc.com 我只想提取单词“Phone”前面的文本,因此只提取地址 我试过使用strip('Phone'),然后获取数组的第一个元素,但它给出了该字符串的第一个字母 address = contacts.strip('Phone') print(ad

所以我试着只从这个字符串中提取地址,但是我遇到了问题。这是字符串的外观:

1040 S.Vintage大道。
加利福尼亚州安大略省A栋91761
美国电话:9099725134传真:9099065401
网状物:http://www.aareninc.com
我只想提取单词
“Phone”
前面的文本,因此只提取地址

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

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

使用分割功能,而不是条带

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

这应该是可行的。

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

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

这应该行得通。

正如@JonClements所评论的,解决方案是:

contacts.partition('Phone')[0]

正如@JonClements所评论的,解决方案是:

contacts.partition('Phone')[0]

对于该任务,您可以使用所谓的零长度断言(本例中为正向前瞻)

输出

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

请注意,如果
文本
不包含
电话
子字符串,则会导致错误。注意
re.DOTALL
标志,因此
也匹配换行符(
/n
),如果没有该标志,输出将是
美国
,对于该任务,您可以使用所谓的零长度断言(本例中为正向前瞻)

输出

1040 S. Vintage Ave.
Building A Ontario, CA 91761
United States
请注意,如果
文本
不包含
电话
子字符串,则会导致错误。注意
re.DOTALL
标志,因此
也匹配换行符(
/n
),如果没有该标志,输出将是
美国
,我希望这能起作用

在Python2.7上测试

string=r“1040 S.Vintage Ave.Building A,Ontario,CA 91761美国电话:9099725134传真:9099065401网络:http://www.aareninc.com"
f=重新拆分(“(?=电话:)”,字符串)
打印“电话前的字符串:”,f[0]
我希望这能奏效

在Python2.7上测试

string=r“1040 S.Vintage Ave.Building A,Ontario,CA 91761美国电话:9099725134传真:9099065401网络:http://www.aareninc.com"
f=重新拆分(“(?=电话:)”,字符串)
打印“电话前的字符串:”,f[0]

考虑到你身上有这样的东西

st='1040 S.Vintage Ave.Building A,安大略省,加利福尼亚州91761美国电话:9099725134传真:9099065401网络:http://www.aareninc.com“

v = st.split("Phone"))
print(v[0])
这将适用于Python3。
如果您使用的是Python2,您可以避免在print语句中使用括号。

考虑到您身边有类似的东西

st='1040 S.Vintage Ave.Building A,安大略省,加利福尼亚州91761美国电话:9099725134传真:9099065401网络:http://www.aareninc.com“

v = st.split("Phone"))
print(v[0])
这将适用于Python3。
如果使用Python2,可以避免在print语句中使用括号。

使用正则表达式:

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']

使用正则表达式:

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']

假设您的字符串定义为:

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]
必须给出相同的结果。

假设您的字符串定义为:

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]
必须给出相同的结果。

您可以首先拆分,以获得“Phone”两侧的字符串列表。 然后,您需要使用strip删除前导和尾随空格

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

这是可行的。

您可以首先拆分以获得“Phone”两侧的字符串列表。 然后,您需要使用strip删除前导和尾随空格

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

这很有效。

您可以使用
re.search()


您可以使用
re.search()


contacts.partition('Phone')[0]
可能。。。但这是一种相当直截了当的方法——这是否符合您的需要是另一回事。您需要提供更多的示例字符串。总的来说,我怀疑一个正则表达式是否有用,您几乎肯定需要根据数据库验证它。但即使这样,你也可能会有很多误报。@JonClements我爱你,伙计!!!它的魅力在于:)
contacts.partition('Phone')[0]
也许。。。但这是一种相当直截了当的方法——这是否符合您的需要是另一回事。您需要提供更多的示例字符串。总的来说,我怀疑一个正则表达式是否有用,您几乎肯定需要根据数据库验证它。但即使这样,你也可能会有很多误报。@JonClements我爱你,伙计!!!它的工作,作为一种魅力:)很高兴它为你工作。。。不过,我怀疑更多的数据会让你失望。。。当你尝试更多的东西。谢谢你的自我回答。。。(如果你想把它归功于我,那么如果你把我的名字记对了也很好:p)很高兴它对你有用。。。不过,我怀疑更多的数据会让你失望。。。当你尝试更多的东西。谢谢你的自我回答。。。(如果你想把它归功于我,那么如果你把我的名字记对了也很好:p)我想因为它都是一个字符串,一个字符串块,如果你尝试split(),你会得到字符串的第一个字母,我想因为它都是一个字符串,一个字符串块,如果你尝试split())您将获得字符串的第一个字母虽然此代码可能会回答问题,但最好解释它如何回答问题。我希望现在的答案更具可读性。现在我已经编辑了这个答案,请考虑删除这个标志。虽然这个代码可以回答这个问题,但是最好解释它是如何回答这个问题的。我希望答案现在更可读。请考虑删除这个答案,现在我已经编辑了它。