重组一个字符串。从文本中拆分数字
Reorganize a string. Split digits from text
在抓取我从 Beautifulsoup 中的 get_text()
收到的网站时:
protein 30 %, crude fibres 2.6 %, fat content 15 %, crude ash 7.7 %, Vitamin E 180 mg/kg, omega-3 fatty acids 1.5 %, omega-6 fatty acids 1.4 %
目的是让 csv 看起来像:
protein ; 30%
crude fibres ; 2,6%
fat content ; 15 %
...
omega-6 fatty acids ; 1,4%
但我需要保持我的报废逻辑。
这就是为什么我需要创建 pair_list=[name,quantity]
就像 pair_list=[protein,30%]
我怎样才能创建这样的一对?
您可以在列表理解中使用 re.split
:
>>> [re.split(r' (?=\d+)',i) for i in s.split(',')]
[['protein ', '30 %'], [' crude fibres ', '2.6 %'], [' fat content ', '15 %'], [' crude ash ', '7.7 %'], [' Vitamin E ', '180 mg/kg'], [' omega-3 fatty acids ', '1.5 %'], [' omega-6 fatty acids ', '1.4 %']]
正则表达式 r' (?=\d+)'
使用 positive look-ahead,这使得 re.split
根据后跟数字的 space 拆分您的正则表达式。
然后您可以将结果写入 csv
文件:
import csv
with open('my_file.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',')
spamwriter.writerows(list_result)
假设你总是有两个 space 分隔符:
>>> s = 'protein 30 %, crude fibres 2.6 %, fat content 15 %, crude ash 7.7 %, Vitamin E 180 mg/kg, omega-3 fatty acids 1.5 %, omega-6 fatty acids 1.4 %'
>>> [x.strip().split(' ') for x in s.split(',')]
[['protein', '30 %'], ['crude fibres', '2.6 %'], ['fat content', '15 %'], ['crude ash', '7.7 %'], ['Vitamin E', '180 mg/kg'], ['omega-3 fatty acids', '1.5 %'], ['omega-6 fatty acids', '1.4 %']]
>>> for x in _:
print(x)
['protein', '30 %']
['crude fibres', '2.6 %']
['fat content', '15 %']
['crude ash', '7.7 %']
['Vitamin E', '180 mg/kg']
['omega-3 fatty acids', '1.5 %']
['omega-6 fatty acids', '1.4 %']
在抓取我从 Beautifulsoup 中的 get_text()
收到的网站时:
protein 30 %, crude fibres 2.6 %, fat content 15 %, crude ash 7.7 %, Vitamin E 180 mg/kg, omega-3 fatty acids 1.5 %, omega-6 fatty acids 1.4 %
目的是让 csv 看起来像:
protein ; 30%
crude fibres ; 2,6%
fat content ; 15 %
...
omega-6 fatty acids ; 1,4%
但我需要保持我的报废逻辑。
这就是为什么我需要创建 pair_list=[name,quantity]
就像 pair_list=[protein,30%]
我怎样才能创建这样的一对?
您可以在列表理解中使用 re.split
:
>>> [re.split(r' (?=\d+)',i) for i in s.split(',')]
[['protein ', '30 %'], [' crude fibres ', '2.6 %'], [' fat content ', '15 %'], [' crude ash ', '7.7 %'], [' Vitamin E ', '180 mg/kg'], [' omega-3 fatty acids ', '1.5 %'], [' omega-6 fatty acids ', '1.4 %']]
正则表达式 r' (?=\d+)'
使用 positive look-ahead,这使得 re.split
根据后跟数字的 space 拆分您的正则表达式。
然后您可以将结果写入 csv
文件:
import csv
with open('my_file.csv', 'wb') as csvfile:
spamwriter = csv.writer(csvfile, delimiter=',')
spamwriter.writerows(list_result)
假设你总是有两个 space 分隔符:
>>> s = 'protein 30 %, crude fibres 2.6 %, fat content 15 %, crude ash 7.7 %, Vitamin E 180 mg/kg, omega-3 fatty acids 1.5 %, omega-6 fatty acids 1.4 %'
>>> [x.strip().split(' ') for x in s.split(',')]
[['protein', '30 %'], ['crude fibres', '2.6 %'], ['fat content', '15 %'], ['crude ash', '7.7 %'], ['Vitamin E', '180 mg/kg'], ['omega-3 fatty acids', '1.5 %'], ['omega-6 fatty acids', '1.4 %']]
>>> for x in _:
print(x)
['protein', '30 %']
['crude fibres', '2.6 %']
['fat content', '15 %']
['crude ash', '7.7 %']
['Vitamin E', '180 mg/kg']
['omega-3 fatty acids', '1.5 %']
['omega-6 fatty acids', '1.4 %']